summaryrefslogtreecommitdiffstats
path: root/src/lib/kdb/encrypt_key.c
diff options
context:
space:
mode:
authorPaul Park <pjpark@mit.edu>1995-08-07 21:44:55 +0000
committerPaul Park <pjpark@mit.edu>1995-08-07 21:44:55 +0000
commitb26b007dd719ce4eeeba3a43ffcfc214357fbb0e (patch)
treec807a8fbc7700ab23fbd18543562722eccef7b4c /src/lib/kdb/encrypt_key.c
parent6df64028850b170d358c88e2dca2b74abafe1a23 (diff)
downloadkrb5-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.c26
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;
}