Work around code where malloc(0) returns 0
authorTheodore Tso <tytso@mit.edu>
Fri, 26 Feb 1993 21:01:19 +0000 (21:01 +0000)
committerTheodore Tso <tytso@mit.edu>
Fri, 26 Feb 1993 21:01:19 +0000 (21:01 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2510 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/krb/copy_data.c

index 31f10ea816e72c8348f6cfecb1f4df7d67ebe231..652944a19797b167f95accd8cc09d34c44efaf25 100644 (file)
@@ -43,15 +43,23 @@ krb5_data **outdata;
 {
     krb5_data *tempdata;
 
+    if (!indata) {
+       *outdata = 0;
+       return 0;
+    }
+    
     if (!(tempdata = (krb5_data *)malloc(sizeof(*tempdata))))
        return ENOMEM;
 
-    *tempdata = *indata;
-    if (!(tempdata->data = malloc(tempdata->length))) {
-       xfree(tempdata);
-       return ENOMEM;
-    }
-    memcpy((char *)tempdata->data, (char *)indata->data, tempdata->length);
+    tmpdata->length = indata->length;
+    if (tempdata->length) {
+       if (!(tempdata->data = malloc(tempdata->length))) {
+           xfree(tempdata);
+           return ENOMEM;
+       }
+       memcpy((char *)tempdata->data, (char *)indata->data, tempdata->length);
+    } else
+       tempdata->data = 0;
     *outdata = tempdata;
     return 0;
 }