diff options
| author | Richard Basch <probe@mit.edu> | 1996-03-22 04:52:13 +0000 |
|---|---|---|
| committer | Richard Basch <probe@mit.edu> | 1996-03-22 04:52:13 +0000 |
| commit | b47ab4858c2620ecce3f4ee5e5afa86a2e8dd2be (patch) | |
| tree | 4c92ff97e627dfcb7bb9c3f2700c3be7698877ff /src/lib/kdb | |
| parent | 1471da60b27d54d4492e2cd7af48bd9c9b8f3c4e (diff) | |
| download | krb5-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')
| -rw-r--r-- | src/lib/kdb/ChangeLog | 5 | ||||
| -rw-r--r-- | src/lib/kdb/decrypt_key.c | 26 |
2 files changed, 19 insertions, 12 deletions
diff --git a/src/lib/kdb/ChangeLog b/src/lib/kdb/ChangeLog index 5aeeffc60a..97fd97b77d 100644 --- a/src/lib/kdb/ChangeLog +++ b/src/lib/kdb/ChangeLog @@ -1,3 +1,8 @@ +Thu Mar 21 20:38:38 1996 Richard Basch <basch@lehman.com> + + * decrypt_key.c (krb5_dbekd_decrypt_key_data): bullet-proofing the + code -- if the data contents are NULL, do not coredump. + Mon Mar 18 21:46:39 1996 Ezra Peisach <epeisach@kangaroo.mit.edu> * configure.in: Add KRB5_RUN_FLAGS 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 */ |
