summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2013-03-08 15:27:14 +0100
committerSimo Sorce <simo@redhat.com>2013-03-13 14:41:38 -0400
commit7800c9da75ad0dc3b4a530b15adce86d6c4f26e5 (patch)
treedcfc6899b784dba3b24df2a5c3de39d00f4da007 /src
parent22d381367c27910fe82f476a76b9f4ede555e35a (diff)
downloadsssd-7800c9da75ad0dc3b4a530b15adce86d6c4f26e5.tar.gz
sssd-7800c9da75ad0dc3b4a530b15adce86d6c4f26e5.tar.xz
sssd-7800c9da75ad0dc3b4a530b15adce86d6c4f26e5.zip
More generalized function open_debug_file_ex()
Function open_debug_file_ex() set flag FD_CLOEXEC to opened file according to the value of third parameter. Removed duplicity of unsetting FD_CLOEXEC after calling function open_debug_file_ex()
Diffstat (limited to 'src')
-rw-r--r--src/providers/krb5/krb5_init_shared.c6
-rw-r--r--src/providers/ldap/sdap_child_helpers.c6
-rw-r--r--src/util/debug.c10
-rw-r--r--src/util/util.h2
4 files changed, 9 insertions, 15 deletions
diff --git a/src/providers/krb5/krb5_init_shared.c b/src/providers/krb5/krb5_init_shared.c
index 312c695ea..0dac5fa69 100644
--- a/src/providers/krb5/krb5_init_shared.c
+++ b/src/providers/krb5/krb5_init_shared.c
@@ -30,7 +30,6 @@ errno_t krb5_child_init(struct krb5_ctx *krb5_auth_ctx,
{
errno_t ret;
FILE *debug_filep;
- unsigned v;
time_t renew_intv;
if (dp_opt_get_bool(krb5_auth_ctx->opts, KRB5_STORE_PASSWORD_IF_OFFLINE)) {
@@ -71,7 +70,7 @@ errno_t krb5_child_init(struct krb5_ctx *krb5_auth_ctx,
}
if (debug_to_file != 0) {
- ret = open_debug_file_ex(KRB5_CHILD_LOG_FILE, &debug_filep);
+ ret = open_debug_file_ex(KRB5_CHILD_LOG_FILE, &debug_filep, false);
if (ret != EOK) {
DEBUG(0, ("Error setting up logging (%d) [%s]\n",
ret, strerror(ret)));
@@ -84,9 +83,6 @@ errno_t krb5_child_init(struct krb5_ctx *krb5_auth_ctx,
ret = errno;
goto done;
}
-
- v = fcntl(krb5_auth_ctx->child_debug_fd, F_GETFD, 0);
- fcntl(krb5_auth_ctx->child_debug_fd, F_SETFD, v & ~FD_CLOEXEC);
}
done:
diff --git a/src/providers/ldap/sdap_child_helpers.c b/src/providers/ldap/sdap_child_helpers.c
index f2412f9e5..c63c3cb72 100644
--- a/src/providers/ldap/sdap_child_helpers.c
+++ b/src/providers/ldap/sdap_child_helpers.c
@@ -453,11 +453,10 @@ static errno_t set_tgt_child_timeout(struct tevent_req *req,
int setup_child(struct sdap_id_ctx *ctx)
{
int ret;
- unsigned v;
FILE *debug_filep;
if (debug_to_file != 0 && ldap_child_debug_fd == -1) {
- ret = open_debug_file_ex(LDAP_CHILD_LOG_FILE, &debug_filep);
+ ret = open_debug_file_ex(LDAP_CHILD_LOG_FILE, &debug_filep, false);
if (ret != EOK) {
DEBUG(0, ("Error setting up logging (%d) [%s]\n",
ret, strerror(ret)));
@@ -470,9 +469,6 @@ int setup_child(struct sdap_id_ctx *ctx)
ret = errno;
return ret;
}
-
- v = fcntl(ldap_child_debug_fd, F_GETFD, 0);
- fcntl(ldap_child_debug_fd, F_SETFD, v & ~FD_CLOEXEC);
}
return EOK;
diff --git a/src/util/debug.c b/src/util/debug.c
index 54fb8011b..3bf5e75af 100644
--- a/src/util/debug.c
+++ b/src/util/debug.c
@@ -173,7 +173,7 @@ void ldb_debug_messages(void *context, enum ldb_debug_level level,
free(message);
}
-int open_debug_file_ex(const char *filename, FILE **filep)
+int open_debug_file_ex(const char *filename, FILE **filep, bool want_cloexec)
{
FILE *f = NULL;
char *logpath;
@@ -214,8 +214,10 @@ int open_debug_file_ex(const char *filename, FILE **filep)
return EIO;
}
- flags = fcntl(debug_fd, F_GETFD, 0);
- (void) fcntl(debug_fd, F_SETFD, flags | FD_CLOEXEC);
+ if(want_cloexec) {
+ flags = fcntl(debug_fd, F_GETFD, 0);
+ (void) fcntl(debug_fd, F_SETFD, flags | FD_CLOEXEC);
+ }
if (filep == NULL) {
debug_file = f;
@@ -228,7 +230,7 @@ int open_debug_file_ex(const char *filename, FILE **filep)
int open_debug_file(void)
{
- return open_debug_file_ex(NULL, NULL);
+ return open_debug_file_ex(NULL, NULL, true);
}
int rotate_debug_files(void)
diff --git a/src/util/util.h b/src/util/util.h
index d5ff9bb07..e61a94f7f 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -336,7 +336,7 @@ safealign_memcpy(void *dest, const void *src, size_t n, size_t *counter)
/* From debug.c */
void ldb_debug_messages(void *context, enum ldb_debug_level level,
const char *fmt, va_list ap);
-int open_debug_file_ex(const char *filename, FILE **filep);
+int open_debug_file_ex(const char *filename, FILE **filep, bool want_cloexec);
int open_debug_file(void);
int rotate_debug_files(void);
void talloc_log_fn(const char *msg);