diff options
author | Herb Lewis <herb@samba.org> | 2001-12-21 17:46:53 +0000 |
---|---|---|
committer | Herb Lewis <herb@samba.org> | 2001-12-21 17:46:53 +0000 |
commit | 7e0d6938b9ca1b64c321d300c577dac8aa0b548c (patch) | |
tree | 8827b576de7d7106714c63d7cf9e065aeff1ebc4 /source/nsswitch/winbind_nss.c | |
parent | 850fb4b5b49d39a52b1c0d58f79f796369c9ab37 (diff) | |
download | samba-7e0d6938b9ca1b64c321d300c577dac8aa0b548c.tar.gz samba-7e0d6938b9ca1b64c321d300c577dac8aa0b548c.tar.xz samba-7e0d6938b9ca1b64c321d300c577dac8aa0b548c.zip |
fix memory leak
Diffstat (limited to 'source/nsswitch/winbind_nss.c')
-rw-r--r-- | source/nsswitch/winbind_nss.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/source/nsswitch/winbind_nss.c b/source/nsswitch/winbind_nss.c index e7e53a40a10..bb401a00338 100644 --- a/source/nsswitch/winbind_nss.c +++ b/source/nsswitch/winbind_nss.c @@ -178,6 +178,8 @@ winbind_callback(nsd_file_t **rqp, int fd) status = winbindd_get_response(&response); if (status != NSS_STATUS_SUCCESS) { + /* free any extra data area in response structure */ + free_response(&response); nsd_logprintf(NSD_LOG_MIN, "callback (winbind) returning not found\n"); rq->f_status = NS_NOTFOUND; return NSD_NEXT; @@ -193,8 +195,7 @@ winbind_callback(nsd_file_t **rqp, int fd) pw->pw_gecos, pw->pw_dir, pw->pw_shell); - nsd_set_result(rq,NS_SUCCESS,result,strlen(result),VOLATILE); - return NSD_OK; + break; case WINBINDD_GETGRNAM_FROM_GROUP: case WINBINDD_GETGRNAM_FROM_GID: if (gr->num_gr_mem && response.extra_data) @@ -203,11 +204,15 @@ winbind_callback(nsd_file_t **rqp, int fd) members = ""; snprintf(result,1023,"%s:%s:%d:%s\n", gr->gr_name, gr->gr_passwd, gr->gr_gid, members); - nsd_set_result(rq,NS_SUCCESS,result,strlen(result),VOLATILE); - return NSD_OK; + break; + default: + nsd_logprintf(NSD_LOG_MIN, "callback (winbind) - no valid command\n"); + return NSD_NEXT; } - nsd_logprintf(NSD_LOG_MIN, "exit callback (winbind) - no valid command\n"); - return NSD_NEXT; + /* free any extra data area in response structure */ + free_response(&response); + nsd_set_result(rq,NS_SUCCESS,result,strlen(result),VOLATILE); + return NSD_OK; } static int |