Apply a patch from Apple to correct a few memory leaks
authorGreg Hudson <ghudson@mit.edu>
Mon, 3 Nov 2008 19:47:40 +0000 (19:47 +0000)
committerGreg Hudson <ghudson@mit.edu>
Mon, 3 Nov 2008 19:47:40 +0000 (19:47 +0000)
ticket: 6201

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20958 dc483132-0cff-0310-8789-dd5450dbe970

src/kdc/kdc_authdata.c
src/kdc/kdc_preauth.c
src/lib/kdb/kdb_default.c

index a8f9241ea8aa7755f8bb693456b7c7f4ae5f9e36..9fd37f2d6bfff49cbb0ca065ae4ad39642e07960 100644 (file)
@@ -140,20 +140,17 @@ static struct plugin_dir_handle authdata_plugins;
 krb5_error_code
 load_authdata_plugins(krb5_context context)
 {
-    struct errinfo err;
     void **authdata_plugins_ftables = NULL;
     struct krb5plugin_authdata_ftable_v0 *ftable = NULL;
     size_t module_count;
     int i, k;
     init_proc server_init_proc = NULL;
 
-    memset(&err, 0, sizeof(err));
-
     /* Attempt to load all of the authdata plugins we can find. */
     PLUGIN_DIR_INIT(&authdata_plugins);
     if (PLUGIN_DIR_OPEN(&authdata_plugins) == 0) {
        if (krb5int_open_plugin_dirs(objdirs, NULL,
-                                    &authdata_plugins, &err) != 0) {
+                                    &authdata_plugins, &context->err) != 0) {
            return KRB5_PLUGIN_NO_HANDLE;
        }
     }
@@ -163,7 +160,7 @@ load_authdata_plugins(krb5_context context)
     n_authdata_systems = 0;
     if (krb5int_get_plugin_dir_data(&authdata_plugins,
                                    "authdata_server_0",
-                                   &authdata_plugins_ftables, &err) != 0) {
+                                   &authdata_plugins_ftables, &context->err) != 0) {
        return KRB5_PLUGIN_NO_HANDLE;
     }
 
index 9fd8d8d98f3280833a321fd5b85c70b93dcbce69..c7655ab0d9c8141393a9adacaa95cd054b1b5d27 100644 (file)
@@ -321,7 +321,6 @@ static struct plugin_dir_handle preauth_plugins;
 krb5_error_code
 load_preauth_plugins(krb5_context context)
 {
-    struct errinfo err;
     void **preauth_plugins_ftables;
     struct krb5plugin_preauth_server_ftable_v1 *ftable;
     int module_count, i, j, k;
@@ -329,13 +328,11 @@ load_preauth_plugins(krb5_context context)
     preauth_server_init_proc server_init_proc = NULL;
     char **kdc_realm_names = NULL;
 
-    memset(&err, 0, sizeof(err));
-
     /* Attempt to load all of the preauth plugins we can find. */
     PLUGIN_DIR_INIT(&preauth_plugins);
     if (PLUGIN_DIR_OPEN(&preauth_plugins) == 0) {
        if (krb5int_open_plugin_dirs(objdirs, NULL,
-                                    &preauth_plugins, &err) != 0) {
+                                    &preauth_plugins, &context->err) != 0) {
            return KRB5_PLUGIN_NO_HANDLE;
        }
     }
@@ -344,7 +341,7 @@ load_preauth_plugins(krb5_context context)
     preauth_plugins_ftables = NULL;
     if (krb5int_get_plugin_dir_data(&preauth_plugins,
                                    "preauthentication_server_1",
-                                   &preauth_plugins_ftables, &err) != 0) {
+                                   &preauth_plugins_ftables, &context->err) != 0) {
        return KRB5_PLUGIN_NO_HANDLE;
     }
 
index f7a855b72975f4fcc3b5ce05de64afa4e968f57f..78d06a300ea238cc8d7071c95f9dcbcf484b43cd 100644 (file)
@@ -145,7 +145,7 @@ krb5_def_store_mkey(krb5_context   context,
     char *tmp_ktname = NULL, *tmp_ktpath;
     krb5_data *realm = krb5_princ_realm(context, mname);
 #ifndef LEAN_CLIENT 
-    krb5_keytab kt;
+    krb5_keytab kt = NULL;
     krb5_keytab_entry new_entry;
 #endif /* LEAN_CLIENT */
     struct stat stb;
@@ -226,6 +226,10 @@ krb5_def_store_mkey(krb5_context   context,
 out:
     if (tmp_ktname != NULL)
         free(tmp_ktname);
+#ifndef LEAN_CLIENT 
+    if (kt)
+       krb5_kt_close(context, kt);
+#endif
 
     return retval;
 }
@@ -319,7 +323,7 @@ krb5_db_def_fetch_mkey_keytab(krb5_context   context,
                               krb5_kvno      *kvno)
 {
     krb5_error_code retval = 0;
-    krb5_keytab kt;
+    krb5_keytab kt = NULL;
     krb5_keytab_entry kt_ent;
     krb5_enctype enctype = IGNORE_ENCTYPE;
 
@@ -369,6 +373,9 @@ krb5_db_def_fetch_mkey_keytab(krb5_context   context,
     }
 
 errout:
+    if (kt)
+       krb5_kt_close(context, kt);
+
     return retval;
 }
 #endif /* LEAN_CLIENT */