Fix vector initialization error in KDC preauth code
authorGreg Hudson <ghudson@mit.edu>
Sun, 24 May 2009 15:53:51 +0000 (15:53 +0000)
committerGreg Hudson <ghudson@mit.edu>
Sun, 24 May 2009 15:53:51 +0000 (15:53 +0000)
In the KDC, get_preauth_hint_list had two bugs initializing the
preauth array.  It was allocating 21 extra entries instead of two due
to a typo (harmless), and it was only zeroing up through one extra
entry (harmful).  Adjust the code to use calloc to avoid further
disagreements of this nature.

ticket: 6496
target_version: 1.7
tags: pullup

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

src/kdc/kdc_preauth.c

index 63f76875607d5dbfadfd74d0f942beb646e240a5..cc7ae34ed4ce2530dee9f25f4d6ae065985940c9 100644 (file)
@@ -972,11 +972,10 @@ void get_preauth_hint_list(krb5_kdc_req *request, krb5_db_entry *client,
     e_data->data = 0;
     
     hw_only = isflagset(client->attributes, KRB5_KDB_REQUIRES_HW_AUTH);
-    /* Allocate 1 entry for the terminator and one for the cookie*/
-    pa_data = malloc(sizeof(krb5_pa_data *) * (n_preauth_systems+21));
+    /* Allocate two extra entries for the cookie and the terminator. */
+    pa_data = calloc(n_preauth_systems + 2, sizeof(krb5_pa_data *));
     if (pa_data == 0)
        return;
-    memset(pa_data, 0, sizeof(krb5_pa_data *) * (n_preauth_systems+1));
     pa = pa_data;
 
     for (ap = preauth_systems; ap->type != -1; ap++) {