diff options
| author | Theodore Tso <tytso@mit.edu> | 1993-10-15 16:32:22 +0000 |
|---|---|---|
| committer | Theodore Tso <tytso@mit.edu> | 1993-10-15 16:32:22 +0000 |
| commit | 3909e34b87a1a783d63e276568f2549cdc2d2795 (patch) | |
| tree | 803fcfd0475ac2c6ebed9993a7bd02022536bf24 /src/lib | |
| parent | 7f85a380aacb800293832f46f74430d92311d320 (diff) | |
| download | krb5-3909e34b87a1a783d63e276568f2549cdc2d2795.tar.gz krb5-3909e34b87a1a783d63e276568f2549cdc2d2795.tar.xz krb5-3909e34b87a1a783d63e276568f2549cdc2d2795.zip | |
Fixed memory leak reported by marc; mk_req_ext wasn't free the authenticator
structure.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2669 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/krb5/krb/mk_req_ext.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/lib/krb5/krb/mk_req_ext.c b/src/lib/krb5/krb/mk_req_ext.c index 3fc5d0a12..1595a8fa3 100644 --- a/src/lib/krb5/krb/mk_req_ext.c +++ b/src/lib/krb5/krb/mk_req_ext.c @@ -132,6 +132,15 @@ krb5_data *outbuf; cleanup_ticket(); return retval; } + + /* encode the authenticator */ + retval = encode_krb5_authenticator(&authent, &scratch); + if (retval) { + cleanup_key(); + cleanup_ticket(); + return(retval); + } + if (authentp) { *authentp = authent; /* Null out these fields, to prevent pointer sharing problems @@ -140,14 +149,8 @@ krb5_data *outbuf; */ authentp->client = NULL; authentp->checksum = NULL; - } - /* encode it before encrypting */ - retval = encode_krb5_authenticator(&authent, &scratch); - if (retval) { - cleanup_key(); - cleanup_ticket(); - return(retval); - } + } else + krb5_free_authenticator_contents(&authent); #define cleanup_scratch() { (void) memset(scratch->data, 0, scratch->length); \ krb5_free_data(scratch); } @@ -163,7 +166,7 @@ krb5_free_data(scratch); } if (!(scratch->data = realloc(scratch->data, request.authenticator.ciphertext.length))) { /* may destroy scratch->data */ - xfree(scratch); + krb5_xfree(scratch); retval = ENOMEM; goto clean_ticket; } @@ -206,7 +209,7 @@ request.authenticator.ciphertext.data = 0;} if (!(retval = encode_krb5_ap_req(&request, &toutbuf))) { *outbuf = *toutbuf; - xfree(toutbuf); + krb5_xfree(toutbuf); } cleanup_ticket(); cleanup_encpart(); |
