krb5 commit: Fix a trivial file leak writing kadmind pid file

Greg Hudson ghudson at MIT.EDU
Tue Mar 26 13:29:37 EDT 2013


https://github.com/krb5/krb5/commit/47ec1ab146334f94b97e6572904a14ad67ee2524
commit 47ec1ab146334f94b97e6572904a14ad67ee2524
Author: Greg Hudson <ghudson at mit.edu>
Date:   Mon Mar 25 17:38:41 2013 -0400

    Fix a trivial file leak writing kadmind pid file
    
    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 at oracle.com>.

 src/kadmin/server/ovsec_kadmd.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/kadmin/server/ovsec_kadmd.c b/src/kadmin/server/ovsec_kadmd.c
index 60a2afb..a1fee7e 100644
--- a/src/kadmin/server/ovsec_kadmd.c
+++ b/src/kadmin/server/ovsec_kadmd.c
@@ -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 */


More information about the cvs-krb5 mailing list