diff options
| author | John Kohl <jtkohl@mit.edu> | 1990-05-18 10:44:01 +0000 |
|---|---|---|
| committer | John Kohl <jtkohl@mit.edu> | 1990-05-18 10:44:01 +0000 |
| commit | 0d860a3117ba632976ddfa270ee1683b77b10e55 (patch) | |
| tree | bcb848eadf7cdadc1d44922d86a6602c87eeec92 /src/lib | |
| parent | d104fdea16bdc8dc6e936ffd2a58be63cfdc1daf (diff) | |
allocate space for padding
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@884 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/kdb/encrypt_key.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lib/kdb/encrypt_key.c b/src/lib/kdb/encrypt_key.c index 929c7c061..b60752433 100644 --- a/src/lib/kdb/encrypt_key.c +++ b/src/lib/kdb/encrypt_key.c @@ -37,21 +37,27 @@ krb5_keyblock *out; along with the encrypted key */ krb5_error_code retval; + krb5_octet *tmpcontents; out->keytype = in->keytype; out->length = krb5_encrypt_size(in->length, eblock->crypto_entry); + if (!(tmpcontents = (krb5_octet *)calloc(1, out->length))) + return ENOMEM; + + bcopy((char *) in->contents, (char *)tmpcontents, in->length); out->length += sizeof(out->length); out->contents = (krb5_octet *)malloc(out->length); if (!out->contents) { out->contents = 0; out->length = 0; + xfree(tmpcontents); return ENOMEM; } /* copy in real length */ bcopy((char *)&in->length, (char *)out->contents, sizeof(out->length)); /* and arrange for encrypted key */ if (retval = (*eblock->crypto_entry-> - encrypt_func)((krb5_pointer) in->contents, + encrypt_func)((krb5_pointer) tmpcontents, (krb5_pointer) (((char *) out->contents) + sizeof(out->length)), in->length, eblock, 0)) { @@ -59,5 +65,6 @@ krb5_keyblock *out; out->contents = 0; out->length = 0; } + xfree(tmpcontents); return retval; } |
