r12037: Fix malloc corruption caused by double-free(), where realloc(ptr, 0)
[sfrench/samba-autobuild/.git] / source4 / heimdal / lib / krb5 / keytab_memory.c
index afa8f433ac82f6ad29530f7f361433e3cadb1c89..1039847de91ebb8c0f02d67cc5bab46a5d9f35d3 100644 (file)
@@ -214,9 +214,15 @@ mkt_remove_entry(krb5_context context,
        krb5_clear_error_string (context);
        return KRB5_KT_NOTFOUND;
     }
-    e = realloc(d->entries, d->num_entries * sizeof(*d->entries));
-    if(e != NULL)
-       d->entries = e;
+    if (d->num_entries == 0) {
+       free(d->entries);
+       d->entries = NULL;
+    } else {
+       e = realloc(d->entries, d->num_entries * sizeof(*d->entries));
+       if(e != NULL)
+           d->entries = e;
+    }
+
     return 0;
 }