summaryrefslogtreecommitdiffstats
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
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.
-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 */