diff options
| author | Theodore Tso <tytso@mit.edu> | 1993-02-26 21:01:19 +0000 |
|---|---|---|
| committer | Theodore Tso <tytso@mit.edu> | 1993-02-26 21:01:19 +0000 |
| commit | 53999e11de5fb7d7f6e4a768dab00a04d6a4aa79 (patch) | |
| tree | eb4fb1e0b041b31b54f6da6e9d03ae4251331755 | |
| parent | 916ab24c38ac9427fedf224e8a6736afe29ac3f2 (diff) | |
| download | krb5-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
| -rw-r--r-- | src/lib/krb5/krb/copy_data.c | 20 |
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; } |
