summaryrefslogtreecommitdiffstats
path: root/src/kadmin
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2013-03-29 02:22:12 -0400
committerGreg Hudson <ghudson@mit.edu>2013-03-29 02:22:12 -0400
commitfb473d814d5b422c67f2e2e69764edee1fdd9783 (patch)
tree6e6cea2f38354fa1def0fa0a5119dd33b0df230d /src/kadmin
parente5a79ece676bdb8f9a3aef838ec8f5c5c848c368 (diff)
downloadkrb5-fb473d814d5b422c67f2e2e69764edee1fdd9783.tar.gz
krb5-fb473d814d5b422c67f2e2e69764edee1fdd9783.tar.xz
krb5-fb473d814d5b422c67f2e2e69764edee1fdd9783.zip
Fix errno hygiene in kadmind write_pid_file
fclose() might overwrite the errno value from fprintf, causing us to return success when we shouldn't. Record the errno value at the time of the fprintf failure.
Diffstat (limited to 'src/kadmin')
-rw-r--r--src/kadmin/server/ovsec_kadmd.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/kadmin/server/ovsec_kadmd.c b/src/kadmin/server/ovsec_kadmd.c
index a1fee7e3aa..dad7248696 100644
--- a/src/kadmin/server/ovsec_kadmd.c
+++ b/src/kadmin/server/ovsec_kadmd.c
@@ -194,9 +194,9 @@ write_pid_file(const char *pid_file)
if (file == NULL)
return errno;
pid = (unsigned long) getpid();
- st1 = fprintf(file, "%ld\n", pid);
- st2 = fclose(file);
- return (st1 < 0 || st2 == EOF) ? errno : 0;
+ st1 = (fprintf(file, "%ld\n", pid) < 0) ? errno : 0;
+ st2 = (fclose(file) == EOF) ? errno : 0;
+ return st1 ? st1 : st2;
}
/* XXX yuck. the signal handlers need this */