diff options
author | Paul Park <pjpark@mit.edu> | 1995-08-07 21:44:55 +0000 |
---|---|---|
committer | Paul Park <pjpark@mit.edu> | 1995-08-07 21:44:55 +0000 |
commit | b26b007dd719ce4eeeba3a43ffcfc214357fbb0e (patch) | |
tree | c807a8fbc7700ab23fbd18543562722eccef7b4c /src/lib/kdb/encrypt_key.c | |
parent | 6df64028850b170d358c88e2dca2b74abafe1a23 (diff) | |
download | krb5-b26b007dd719ce4eeeba3a43ffcfc214357fbb0e.tar.gz krb5-b26b007dd719ce4eeeba3a43ffcfc214357fbb0e.tar.xz krb5-b26b007dd719ce4eeeba3a43ffcfc214357fbb0e.zip |
Improve keysalt handling
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@6443 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kdb/encrypt_key.c')
-rw-r--r-- | src/lib/kdb/encrypt_key.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/lib/kdb/encrypt_key.c b/src/lib/kdb/encrypt_key.c index bc2b0cb2da..cc8cf0be86 100644 --- a/src/lib/kdb/encrypt_key.c +++ b/src/lib/kdb/encrypt_key.c @@ -93,18 +93,22 @@ krb5_dbekd_encrypt_key_data(context, eblock, keyblock, keysalt, keyver,key_data) /* After key comes the salt in necessary */ if (keysalt) { - key_data->key_data_contents[1] = - (krb5_octet *)malloc(keysalt->data.length); - if (key_data->key_data_contents[1] == NULL) { - krb5_xfree(key_data->key_data_contents[0]); - return ENOMEM; - } - memcpy(key_data->key_data_contents[1], - keysalt->data.data, - (size_t) keysalt->data.length); - key_data->key_data_length[1] = keysalt->data.length; key_data->key_data_type[1] = keysalt->type; - key_data->key_data_ver++; + if (key_data->key_data_type[1] >= 0) { + key_data->key_data_ver++; + key_data->key_data_length[1] = keysalt->data.length; + if (keysalt && keysalt->data.length) { + key_data->key_data_contents[1] = + (krb5_octet *)malloc(keysalt->data.length); + if (key_data->key_data_contents[1] == NULL) { + krb5_xfree(key_data->key_data_contents[0]); + return ENOMEM; + } + memcpy(key_data->key_data_contents[1], + keysalt->data.data, + (size_t) keysalt->data.length); + } + } } return retval; } |