summaryrefslogtreecommitdiffstats
path: root/src/kadmin/server/ovsec_kadmd.c
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/server/ovsec_kadmd.c
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/server/ovsec_kadmd.c')
-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 */