krb5 commit: Fix glob memory leak in GSS initialization

Greg Hudson ghudson at MIT.EDU
Thu Aug 7 15:07:40 EDT 2014


https://github.com/krb5/krb5/commit/20f91672568b1d2e341a9bb0dba88a831f152f1c
commit 20f91672568b1d2e341a9bb0dba88a831f152f1c
Author: Greg Hudson <ghudson at mit.edu>
Date:   Mon Aug 4 23:34:32 2014 -0400

    Fix glob memory leak in GSS initialization
    
    In loadConfigFiles, call globfree even if glob fails, since glob can
    allocate memory and report partial results on failure.  Also
    initialize globbuf before calling glob; this is not strictly required,
    but hedges against hypothetical libc implementation bugs which could
    leave globbuf.gl_pathc or globbuf.gl_pathv uninitialized on error.
    
    ticket: 7981

 src/lib/gssapi/mechglue/g_initialize.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/lib/gssapi/mechglue/g_initialize.c b/src/lib/gssapi/mechglue/g_initialize.c
index 85810a9..2987164 100644
--- a/src/lib/gssapi/mechglue/g_initialize.c
+++ b/src/lib/gssapi/mechglue/g_initialize.c
@@ -437,11 +437,12 @@ loadConfigFiles()
 
 	load_if_changed(MECH_CONF, g_confFileModTime, &highest);
 
+	memset(&globbuf, 0, sizeof(globbuf));
 	if (glob(MECH_CONF_PATTERN, 0, NULL, &globbuf) == 0) {
 		for (path = globbuf.gl_pathv; *path != NULL; path++)
 			load_if_changed(*path, g_confFileModTime, &highest);
-		globfree(&globbuf);
 	}
+	globfree(&globbuf);
 
 	g_confFileModTime = highest;
 }


More information about the cvs-krb5 mailing list