* plugins.c (krb5int_get_plugin_dir_data): If dirhandle is null or the
authorKen Raeburn <raeburn@mit.edu>
Mon, 13 Mar 2006 21:56:26 +0000 (21:56 +0000)
committerKen Raeburn <raeburn@mit.edu>
Mon, 13 Mar 2006 21:56:26 +0000 (21:56 +0000)
file pointer is null, return a one-element list containing just NULL.

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

src/util/support/ChangeLog
src/util/support/plugins.c

index eb112f60d9aadadee1be965ce0f048e2ff61b03d..295f42f123ff9d7c61ec245990125e5c9eb3cc0a 100644 (file)
@@ -1,3 +1,9 @@
+2006-03-13  Ken Raeburn  <raeburn@mit.edu>
+
+       * plugins.c (krb5int_get_plugin_dir_data): If dirhandle is null or
+       the file pointer is null, return a one-element list containing
+       just NULL.
+
 2006-03-11  Ken Raeburn  <raeburn@mit.edu>
 
        * Makefile.in (autoconf.h): Note location change.
index 8070db6a5c2a45072a88448d5a9e9c9450616506..c245a70dbd42223b17966d2e99a3a09056f1e6ae 100644 (file)
@@ -283,17 +283,14 @@ krb5int_get_plugin_dir_data (struct plugin_dir_handle *dirhandle,
     void **p, **newp, *sym;
     int count, i, err;
 
-    if (dirhandle == NULL) {
-       *ptrs = 0;
-       return 0;
-    }
-
     /* XXX Do we need to add a leading "_" to the symbol name on any
        modern platforms?  */
 
     Tprintf("get_plugin_data_sym(%s)\n", symname);
     p = 0;
     count = 0;
+    if (dirhandle == NULL || dirhandle->files == NULL)
+       goto skip_loop;
     for (i = 0; !NULL_HANDLE (&dirhandle->files[i]); i++) {
        int32_t kerr;
        sym = NULL;
@@ -311,6 +308,7 @@ krb5int_get_plugin_dir_data (struct plugin_dir_handle *dirhandle,
        p[count] = sym;
        count++;
     }
+skip_loop:
     newp = realloc(p, (count+1) * sizeof(*p));
     if (newp == NULL)
        goto realloc_failure;