diff options
| author | John Kohl <jtkohl@mit.edu> | 1991-02-28 17:23:03 +0000 |
|---|---|---|
| committer | John Kohl <jtkohl@mit.edu> | 1991-02-28 17:23:03 +0000 |
| commit | 4aaf34b1618e04b360c1d45e6b8daa677b04ad78 (patch) | |
| tree | 59b095f896d71b915a69fb7dc284b8f03fbe1534 /src | |
| parent | fb96bde9f4426d7474d0ff968f1b31a3d4ce3631 (diff) | |
allow it to generate the random key as needed
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@1820 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/krb5/krb/mk_req_ext.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/lib/krb5/krb/mk_req_ext.c b/src/lib/krb5/krb/mk_req_ext.c index 6a5ce9c38..9bf9f8b9d 100644 --- a/src/lib/krb5/krb/mk_req_ext.c +++ b/src/lib/krb5/krb/mk_req_ext.c @@ -70,7 +70,7 @@ const krb5_checksum *checksum; const krb5_ticket_times *times; const krb5_flags kdc_options; krb5_int32 sequence; -krb5_keyblock *newkey; +krb5_keyblock **newkey; krb5_ccache ccache; krb5_creds *creds; krb5_authenticator *authentp; @@ -111,8 +111,16 @@ krb5_data *outbuf; return(retval); #define cleanup_ticket() krb5_free_ticket(request.ticket) - if (retval = generate_authenticator(&authent, creds, checksum, newkey, + if (newkey) { + if (retval = krb5_generate_subkey(&creds->keyblock, newkey)) { + cleanup_ticket(); + return retval; + } + } +#define cleanup_key() {if (newkey) krb5_free_keyblock(*newkey);} + if (retval = generate_authenticator(&authent, creds, checksum, *newkey, sequence)) { + cleanup_key(); cleanup_ticket(); return retval; } @@ -128,6 +136,7 @@ krb5_data *outbuf; /* encode it before encrypting */ retval = encode_krb5_authenticator(&authent, &scratch); if (retval) { + cleanup_key(); cleanup_ticket(); return(retval); } @@ -202,6 +211,7 @@ request.authenticator.ciphertext.data = 0;} clean_scratch: cleanup_scratch(); clean_ticket: + cleanup_key(); cleanup_ticket(); return retval; |
