kdb: Do not allocate memory with size 0
authorAndreas Schneider <asn@samba.org>
Mon, 15 Feb 2016 07:24:45 +0000 (08:24 +0100)
committerAlexander Bokovoy <ab@samba.org>
Thu, 2 Jun 2016 10:48:13 +0000 (12:48 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
source4/kdc/sdb_to_kdb.c

index 5d4be53725b200106bc1f11d86a55d90a838cbd3..ce05b6266332579885a7490cbcc144d1f0e4acf2 100644 (file)
@@ -282,24 +282,24 @@ static int sdb_entry_ex_to_krb5_db_entry(krb5_context context,
 
        /* FIXME: TODO HDB Extensions */
 
-
-       k->key_data = malloc(s->keys.len * sizeof(krb5_key_data));
-       if (k->key_data == NULL) {
-               free_krb5_db_entry(context, k);
-               return ret;
-       }
-
-       for (i=0; i < s->keys.len; i++) {
-
-               ret = sdb_key_to_krb5_key_data(&s->keys.val[i],
-                                              s->kvno,
-                                              &k->key_data[i]);
-               if (ret) {
+       if (s->keys.len > 0) {
+               k->key_data = malloc(s->keys.len * sizeof(krb5_key_data));
+               if (k->key_data == NULL) {
                        free_krb5_db_entry(context, k);
                        return ret;
                }
 
-               k->n_key_data++;
+               for (i=0; i < s->keys.len; i++) {
+                       ret = sdb_key_to_krb5_key_data(&s->keys.val[i],
+                                                      s->kvno,
+                                                      &k->key_data[i]);
+                       if (ret) {
+                               free_krb5_db_entry(context, k);
+                               return ret;
+                       }
+
+                       k->n_key_data++;
+               }
        }
 
        return 0;