It's not an out-of-space error if malloc(0) returns 0.
authorSam Hartman <hartmans@mit.edu>
Sat, 27 Jul 1996 02:23:23 +0000 (02:23 +0000)
committerSam Hartman <hartmans@mit.edu>
Sat, 27 Jul 1996 02:23:23 +0000 (02:23 +0000)
So, when copying key_data, only call malloc if the length
is non-zero.

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

src/lib/kadm5/srv/ChangeLog
src/lib/kadm5/srv/svr_principal.c

index 0011ab8636d32e894396307b5222b01fbd0f9fcc..d771d96a6bac6732fedc85573e2a9809210c1b2c 100644 (file)
@@ -1,3 +1,9 @@
+Fri Jul 26 17:48:14 1996  Sam Hartman  <hartmans@mit.edu>
+
+       * svr_principal.c (krb5_copy_key_data_contents): If
+       key_data_length[i] == 0, don't complain if malloc(0) returns 0;
+       this is allowed by ANSI.
+
 Thu Jul 25 18:42:47 1996  Sam Hartman  <hartmans@mit.edu>
 
        * configure.in (LIBS): Link against -ldb under AIX for shared
index 6f9671fcfbe38c75d685db9197f512b2fd1ba7bb..c8dcdd66d78c32503f1fe2d4a376c10eba08b44d 100644 (file)
@@ -57,19 +57,21 @@ kadm5_ret_t krb5_copy_key_data_contents(context, from, to)
      idx = (from->key_data_ver == 1 ? 1 : 2);
 
      for (i = 0; i < idx; i++) {
-         to->key_data_contents[i] = malloc(from->key_data_length[i]);
-         if (to->key_data_contents[i] == NULL) {
-              for (i = 0; i < idx; i++) {
-                   if (to->key_data_contents[i]) {
-                        memset(to->key_data_contents[i], 0,
-                               to->key_data_length[i]);
-                        free(to->key_data_contents[i]);
-                   }
-              }
-              return ENOMEM;
-         }
-         memcpy(to->key_data_contents[i], from->key_data_contents[i],
-                from->key_data_length[i]);
+       if ( from->key_data_length[i] ) {
+        to->key_data_contents[i] = malloc(from->key_data_length[i]);
+        if (to->key_data_contents[i] == NULL) {
+          for (i = 0; i < idx; i++) {
+            if (to->key_data_contents[i]) {
+              memset(to->key_data_contents[i], 0,
+                     to->key_data_length[i]);
+              free(to->key_data_contents[i]);
+            }
+          }
+          return ENOMEM;
+        }
+        memcpy(to->key_data_contents[i], from->key_data_contents[i],
+               from->key_data_length[i]);
+       }
      }
      return 0;
 }