summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1991-01-09 00:35:04 +0000
committerTheodore Tso <tytso@mit.edu>1991-01-09 00:35:04 +0000
commit2d4381e9cd1f20d677446b9ee4924c4a97ce7e80 (patch)
tree51dcfa49ca9e1fc788f4b31c7793db6b1f45a650 /src
parent914f50d07acfdd9abdd05a2c78ceb1d785e82075 (diff)
downloadkrb5-2d4381e9cd1f20d677446b9ee4924c4a97ce7e80.tar.gz
krb5-2d4381e9cd1f20d677446b9ee4924c4a97ce7e80.tar.xz
krb5-2d4381e9cd1f20d677446b9ee4924c4a97ce7e80.zip
Robustified copy_authenticator so that the passed in authenticator
can have a NULL subkey or checksum. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@1625 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/krb/copy_athctr.c39
1 files changed, 21 insertions, 18 deletions
diff --git a/src/lib/krb5/krb/copy_athctr.c b/src/lib/krb5/krb/copy_athctr.c
index 5f30ac4af..5756a991c 100644
--- a/src/lib/krb5/krb/copy_athctr.c
+++ b/src/lib/krb5/krb/copy_athctr.c
@@ -37,26 +37,29 @@ krb5_authenticator **authto;
return retval;
}
- if (retval = krb5_copy_checksum(authfrom->checksum, &tempto->checksum)) {
- krb5_free_principal(tempto->client);
- xfree(tempto);
- return retval;
+ if (authfrom->checksum &&
+ (retval = krb5_copy_checksum(authfrom->checksum, &tempto->checksum))) {
+ krb5_free_principal(tempto->client);
+ xfree(tempto);
+ return retval;
}
- if (!(tempto->subkey =
- (krb5_keyblock *)malloc(sizeof(*tempto->subkey)))) {
- krb5_free_checksum(tempto->checksum);
- krb5_free_principal(tempto->client);
- xfree(tempto);
- return ENOMEM;
- }
- if (retval = krb5_copy_keyblock(authfrom->subkey,
- tempto->subkey)) {
- xfree(tempto->subkey);
- krb5_free_checksum(tempto->checksum);
- krb5_free_principal(tempto->client);
- xfree(tempto);
- return retval;
+ if (authfrom->subkey) {
+ if (!(tempto->subkey =
+ (krb5_keyblock *)malloc(sizeof(*tempto->subkey)))) {
+ krb5_free_checksum(tempto->checksum);
+ krb5_free_principal(tempto->client);
+ xfree(tempto);
+ return ENOMEM;
+ }
+ if (retval = krb5_copy_keyblock(authfrom->subkey,
+ tempto->subkey)) {
+ xfree(tempto->subkey);
+ krb5_free_checksum(tempto->checksum);
+ krb5_free_principal(tempto->client);
+ xfree(tempto);
+ return retval;
+ }
}
*authto = tempto;