summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2010-05-14 11:35:11 +0200
committerStephen Gallagher <sgallagh@redhat.com>2010-05-18 13:06:43 -0400
commitf28774b98000289ac1e3276fd3c3bb6f6c6a2332 (patch)
treeb1d12b61a0b7f2fc9baabed732b1768afc3f890c
parentc4c4fbee11e865053cfa4c03f4869458f78c9e32 (diff)
downloadsssd-f28774b98000289ac1e3276fd3c3bb6f6c6a2332.tar.gz
sssd-f28774b98000289ac1e3276fd3c3bb6f6c6a2332.tar.xz
sssd-f28774b98000289ac1e3276fd3c3bb6f6c6a2332.zip
Refactor krb5_finalize()
-rw-r--r--src/providers/krb5/krb5_common.c39
1 files changed, 27 insertions, 12 deletions
diff --git a/src/providers/krb5/krb5_common.c b/src/providers/krb5/krb5_common.c
index f038557d9..dfcb50260 100644
--- a/src/providers/krb5/krb5_common.c
+++ b/src/providers/krb5/krb5_common.c
@@ -435,22 +435,19 @@ done:
return ret;
}
-void krb5_finalize(struct tevent_context *ev,
- struct tevent_signal *se,
- int signum,
- int count,
- void *siginfo,
- void *private_data)
+
+static errno_t remove_krb5_info_files(TALLOC_CTX *mem_ctx, const char *realm)
{
- char *realm = (char *)private_data;
int ret;
errno_t err;
char *file;
- file = talloc_asprintf(se, KDCINFO_TMPL, realm);
+ file = talloc_asprintf(mem_ctx, KDCINFO_TMPL, realm);
if(file == NULL) {
- sig_term(signum);
+ DEBUG(1, ("talloc_asprintf failed.\n"));
+ return ENOMEM;
}
+
errno = 0;
ret = unlink(file);
if (ret == -1) {
@@ -459,10 +456,10 @@ void krb5_finalize(struct tevent_context *ev,
err, strerror(err)));
}
- errno = 0;
- file = talloc_asprintf(se, KPASSWDINFO_TMPL, realm);
+ file = talloc_asprintf(mem_ctx, KPASSWDINFO_TMPL, realm);
if(file == NULL) {
- sig_term(signum);
+ DEBUG(1, ("talloc_asprintf failed.\n"));
+ return ENOMEM;
}
errno = 0;
@@ -473,5 +470,23 @@ void krb5_finalize(struct tevent_context *ev,
err, strerror(err)));
}
+ return EOK;
+}
+
+void krb5_finalize(struct tevent_context *ev,
+ struct tevent_signal *se,
+ int signum,
+ int count,
+ void *siginfo,
+ void *private_data)
+{
+ char *realm = (char *)private_data;
+ int ret;
+
+ ret = remove_krb5_info_files(se, realm);
+ if (ret != EOK) {
+ DEBUG(1, ("remove_krb5_info_files failed.\n"));
+ }
+
sig_term(signum);
}