summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1993-02-26 21:01:19 +0000
committerTheodore Tso <tytso@mit.edu>1993-02-26 21:01:19 +0000
commit53999e11de5fb7d7f6e4a768dab00a04d6a4aa79 (patch)
treeeb4fb1e0b041b31b54f6da6e9d03ae4251331755 /src
parent916ab24c38ac9427fedf224e8a6736afe29ac3f2 (diff)
downloadkrb5-53999e11de5fb7d7f6e4a768dab00a04d6a4aa79.tar.gz
krb5-53999e11de5fb7d7f6e4a768dab00a04d6a4aa79.tar.xz
krb5-53999e11de5fb7d7f6e4a768dab00a04d6a4aa79.zip
Work around code where malloc(0) returns 0
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2510 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/krb/copy_data.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/lib/krb5/krb/copy_data.c b/src/lib/krb5/krb/copy_data.c
index 31f10ea81..652944a19 100644
--- a/src/lib/krb5/krb/copy_data.c
+++ b/src/lib/krb5/krb/copy_data.c
@@ -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;
}