diff options
author | Greg Hudson <ghudson@mit.edu> | 2013-03-29 02:22:12 -0400 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2013-03-29 02:22:12 -0400 |
commit | fb473d814d5b422c67f2e2e69764edee1fdd9783 (patch) | |
tree | 6e6cea2f38354fa1def0fa0a5119dd33b0df230d /src/kadmin | |
parent | e5a79ece676bdb8f9a3aef838ec8f5c5c848c368 (diff) | |
download | krb5-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.c | 6 |
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 */ |