]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix a trivial file leak writing kadmind pid file
authorGreg Hudson <ghudson@mit.edu>
Mon, 25 Mar 2013 21:38:41 +0000 (17:38 -0400)
committerGreg Hudson <ghudson@mit.edu>
Tue, 26 Mar 2013 17:01:29 +0000 (13:01 -0400)
If we fail to write the pid to the pid file, we should still close the
file before returning from write_pid_file().  The consequences of this
bug are trivial because kadmin is just going to exit regardless.
Reported by Will Fiveash <will.fiveash@oracle.com>.

src/kadmin/server/ovsec_kadmd.c

index 60a2afbb9ce1e565a8015643b1a0af6cfcacd91a..a1fee7e3aad6b6fc26939f060c092acc3e3826fd 100644 (file)
@@ -188,14 +188,15 @@ write_pid_file(const char *pid_file)
 {
     FILE *file;
     unsigned long pid;
+    int st1, st2;
 
     file = fopen(pid_file, "w");
     if (file == NULL)
         return errno;
     pid = (unsigned long) getpid();
-    if (fprintf(file, "%ld\n", pid) < 0 || fclose(file) == EOF)
-        return errno;
-    return 0;
+    st1 = fprintf(file, "%ld\n", pid);
+    st2 = fclose(file);
+    return (st1 < 0 || st2 == EOF) ? errno : 0;
 }
 
 /* XXX yuck.  the signal handlers need this */