diff options
Diffstat (limited to 'src')
| -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; } |
