summaryrefslogtreecommitdiffstats
path: root/src/lib/kdb/decrypt_key.c
diff options
context:
space:
mode:
authorRichard Basch <probe@mit.edu>1996-03-22 04:52:13 +0000
committerRichard Basch <probe@mit.edu>1996-03-22 04:52:13 +0000
commitb47ab4858c2620ecce3f4ee5e5afa86a2e8dd2be (patch)
tree4c92ff97e627dfcb7bb9c3f2700c3be7698877ff /src/lib/kdb/decrypt_key.c
parent1471da60b27d54d4492e2cd7af48bd9c9b8f3c4e (diff)
downloadkrb5-b47ab4858c2620ecce3f4ee5e5afa86a2e8dd2be.tar.gz
krb5-b47ab4858c2620ecce3f4ee5e5afa86a2e8dd2be.tar.xz
krb5-b47ab4858c2620ecce3f4ee5e5afa86a2e8dd2be.zip
bullet-proofing the code -- if the data contents are NULL, it would coredump
(I discovered this one because of another bug) git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@7700 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kdb/decrypt_key.c')
-rw-r--r--src/lib/kdb/decrypt_key.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/lib/kdb/decrypt_key.c b/src/lib/kdb/decrypt_key.c
index 32891098d4..2aa199ac7e 100644
--- a/src/lib/kdb/decrypt_key.c
+++ b/src/lib/kdb/decrypt_key.c
@@ -40,7 +40,7 @@ krb5_dbekd_decrypt_key_data(context, eblock, key_data, keyblock, keysalt)
krb5_keyblock * keyblock;
krb5_keysalt * keysalt;
{
- krb5_error_code retval;
+ krb5_error_code retval = 0;
krb5_int16 tmplen;
krb5_octet * ptr;
@@ -54,17 +54,19 @@ krb5_dbekd_decrypt_key_data(context, eblock, key_data, keyblock, keysalt)
keyblock->length = 0;
ptr = key_data->key_data_contents[0];
- krb5_kdb_decode_int16(ptr, tmplen);
- ptr += 2;
- keyblock->length = (int) tmplen;
- if ((retval = krb5_decrypt(context, (krb5_pointer) ptr,
- (krb5_pointer)keyblock->contents,
- key_data->key_data_length[0] - 2,
- eblock, 0))) {
- krb5_xfree(keyblock->contents);
- keyblock->contents = 0;
- keyblock->length = 0;
- return retval;
+ if (ptr) {
+ krb5_kdb_decode_int16(ptr, tmplen);
+ ptr += 2;
+ keyblock->length = (int) tmplen;
+ if ((retval = krb5_decrypt(context, (krb5_pointer) ptr,
+ (krb5_pointer)keyblock->contents,
+ key_data->key_data_length[0] - 2,
+ eblock, 0))) {
+ krb5_xfree(keyblock->contents);
+ keyblock->contents = 0;
+ keyblock->length = 0;
+ return retval;
+ }
}
/* Decode salt data */