diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/tools_util.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/tools/tools_util.c b/src/tools/tools_util.c index fb4c4ef7..7dfdecf8 100644 --- a/src/tools/tools_util.c +++ b/src/tools/tools_util.c @@ -408,7 +408,7 @@ int create_mail_spool(TALLOC_CTX *mem_ctx, uid_t uid, gid_t gid) { char *spool_file = NULL; - int fd; + int fd = -1; int ret; spool_file = talloc_asprintf(mem_ctx, "%s/%s", maildir, username); @@ -448,18 +448,18 @@ int create_mail_spool(TALLOC_CTX *mem_ctx, ret = errno; DEBUG(1, ("Cannot fsync() the spool file: [%d][%s]\n", ret, strerror(ret))); - goto fail; } - ret = close(fd); - if (ret != 0) { - ret = errno; - DEBUG(1, ("Cannot close() the spool file: [%d][%s]\n", - ret, strerror(ret))); - goto fail; +fail: + if (fd >= 0) { + ret = close(fd); + if (ret != 0) { + ret = errno; + DEBUG(1, ("Cannot close() the spool file: [%d][%s]\n", + ret, strerror(ret))); + } } -fail: reset_selinux_file_context(); talloc_free(spool_file); return ret; |