diff options
| author | Theodore Tso <tytso@mit.edu> | 1991-01-09 00:35:04 +0000 |
|---|---|---|
| committer | Theodore Tso <tytso@mit.edu> | 1991-01-09 00:35:04 +0000 |
| commit | 2d4381e9cd1f20d677446b9ee4924c4a97ce7e80 (patch) | |
| tree | 51dcfa49ca9e1fc788f4b31c7793db6b1f45a650 /src | |
| parent | 914f50d07acfdd9abdd05a2c78ceb1d785e82075 (diff) | |
| download | krb5-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.c | 39 |
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; |
