diff options
| author | Ezra Peisach <epeisach@mit.edu> | 1998-02-25 20:25:15 +0000 |
|---|---|---|
| committer | Ezra Peisach <epeisach@mit.edu> | 1998-02-25 20:25:15 +0000 |
| commit | ebf30bc2f42f1cebb29130e4482a89ca1f1e9607 (patch) | |
| tree | ca2d017a37f21b8c0b16d73107c5ae4fbc08cf14 /src/kadmin/server | |
| parent | 54d3e6cd146b36fe94f6e2bbe46b1604e6801b8f (diff) | |
| download | krb5-ebf30bc2f42f1cebb29130e4482a89ca1f1e9607.tar.gz krb5-ebf30bc2f42f1cebb29130e4482a89ca1f1e9607.tar.xz krb5-ebf30bc2f42f1cebb29130e4482a89ca1f1e9607.zip | |
* schpw.c (process_chpw_request): Free memory of allocated for
local address.
* ovsec_kadmd.c (do_schpw): Call krb5_kt_close to free memory
allocated in keytab routines.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@10474 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin/server')
| -rw-r--r-- | src/kadmin/server/ChangeLog | 8 | ||||
| -rw-r--r-- | src/kadmin/server/ovsec_kadmd.c | 12 | ||||
| -rw-r--r-- | src/kadmin/server/schpw.c | 4 |
3 files changed, 20 insertions, 4 deletions
diff --git a/src/kadmin/server/ChangeLog b/src/kadmin/server/ChangeLog index d37f5ce1e..77cf0df94 100644 --- a/src/kadmin/server/ChangeLog +++ b/src/kadmin/server/ChangeLog @@ -1,3 +1,11 @@ +Wed Feb 25 14:00:32 1998 Ezra Peisach <epeisach@mit.edu> + + * schpw.c (process_chpw_request): Free memory of allocated for + local address. + + * ovsec_kadmd.c (do_schpw): Call krb5_kt_close to free memory + allocated. + Wed Feb 18 15:58:30 1998 Tom Yu <tlyu@mit.edu> * Makefile.in: Remove trailing slash from thisconfigdir. Fix up diff --git a/src/kadmin/server/ovsec_kadmd.c b/src/kadmin/server/ovsec_kadmd.c index bccdf9427..5a1c6b44c 100644 --- a/src/kadmin/server/ovsec_kadmd.c +++ b/src/kadmin/server/ovsec_kadmd.c @@ -907,7 +907,7 @@ void do_schpw(int s1, kadm5_config_params *params) if (connect(s2, (struct sockaddr *) &from, sizeof(from)) < 0) { krb5_klog_syslog(LOG_ERR, "chpw: Couldn't connect to client: %s", error_message(errno)); - return; + goto cleanup; } if (ret = process_chpw_request(context, global_server_handle, @@ -919,9 +919,10 @@ void do_schpw(int s1, kadm5_config_params *params) close(s2); - if (repdata.length == 0) + if (repdata.length == 0) { /* just qreturn. This means something really bad happened */ - return; + goto cleanup; + } len = sendto(s1, repdata.data, repdata.length, 0, (struct sockaddr *) &from, sizeof(from)); @@ -931,10 +932,13 @@ void do_schpw(int s1, kadm5_config_params *params) krb5_klog_syslog(LOG_ERR, "chpw: Error sending reply: %s", error_message(errno)); - return; + goto cleanup; } krb5_xfree(repdata.data); +cleanup: + krb5_kt_close(context, kt); + return; } diff --git a/src/kadmin/server/schpw.c b/src/kadmin/server/schpw.c index cb4a5de0d..c3901be92 100644 --- a/src/kadmin/server/schpw.c +++ b/src/kadmin/server/schpw.c @@ -20,6 +20,7 @@ process_chpw_request(context, server_handle, realm, s, keytab, sin, req, rep) char *ptr; int plen, vno; krb5_address local_kaddr, remote_kaddr; + int allocated_mem = 0; krb5_data ap_req, ap_rep; krb5_auth_context auth_context; krb5_principal changepw; @@ -149,6 +150,7 @@ process_chpw_request(context, server_handle, realm, s, keytab, sin, req, rep) local_kaddr.length = addrs[0]->length; local_kaddr.contents = malloc(addrs[0]->length); memcpy(local_kaddr.contents, addrs[0]->contents, addrs[0]->length); + allocated_mem++; krb5_free_addresses(context, addrs); } @@ -367,6 +369,8 @@ bailout: krb5_xfree(clear.data); if (cipher.length) krb5_xfree(cipher.data); + if (allocated_mem) + krb5_xfree(local_kaddr.contents); return(ret); } |
