diff options
author | Volker Lendecke <vl@samba.org> | 2009-05-12 17:47:22 +0200 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2009-05-12 18:02:00 +0200 |
commit | 3fa69438b9fafc13d522720e188e82455856fc1d (patch) | |
tree | 785824d4d86e70053899ebc0bdda16cfab7befad /source3/winbindd/winbindd_pam.c | |
parent | c9efd454c5ffe0126bb21fdaadd421d71c38e2f7 (diff) | |
download | samba-3fa69438b9fafc13d522720e188e82455856fc1d.tar.gz samba-3fa69438b9fafc13d522720e188e82455856fc1d.tar.bz2 samba-3fa69438b9fafc13d522720e188e82455856fc1d.zip |
Convert response.extra_data.data from malloc to talloc
Diffstat (limited to 'source3/winbindd/winbindd_pam.c')
-rw-r--r-- | source3/winbindd/winbindd_pam.c | 46 |
1 files changed, 14 insertions, 32 deletions
diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c index bbf3526fd0..a85cf0e6fc 100644 --- a/source3/winbindd/winbindd_pam.c +++ b/source3/winbindd/winbindd_pam.c @@ -35,7 +35,6 @@ static NTSTATUS append_info3_as_txt(TALLOC_CTX *mem_ctx, struct netr_SamInfo3 *info3) { char *ex; - size_t size; uint32_t i; state->response.data.auth.info3.logon_time = @@ -82,7 +81,7 @@ static NTSTATUS append_info3_as_txt(TALLOC_CTX *mem_ctx, fstrcpy(state->response.data.auth.info3.logon_dom, info3->base.domain.string); - ex = talloc_strdup(mem_ctx, ""); + ex = talloc_strdup(state->mem_ctx, ""); NT_STATUS_HAVE_NO_MEMORY(ex); for (i=0; i < info3->base.groups.count; i++) { @@ -106,17 +105,8 @@ static NTSTATUS append_info3_as_txt(TALLOC_CTX *mem_ctx, talloc_free(sid); } - size = talloc_get_size(ex); - - SAFE_FREE(state->response.extra_data.data); - state->response.extra_data.data = SMB_MALLOC(size); - if (!state->response.extra_data.data) { - return NT_STATUS_NO_MEMORY; - } - memcpy(state->response.extra_data.data, ex, size); - talloc_free(ex); - - state->response.length += size; + state->response.extra_data.data = ex; + state->response.length += talloc_get_size(ex); return NT_STATUS_OK; } @@ -135,19 +125,9 @@ static NTSTATUS append_info3_as_ndr(TALLOC_CTX *mem_ctx, return ndr_map_error2ntstatus(ndr_err); } - SAFE_FREE(state->response.extra_data.data); - state->response.extra_data.data = SMB_MALLOC(blob.length); - if (!state->response.extra_data.data) { - data_blob_free(&blob); - return NT_STATUS_NO_MEMORY; - } - - memset(state->response.extra_data.data, '\0', blob.length); - memcpy(state->response.extra_data.data, blob.data, blob.length); + state->response.extra_data.data = blob.data; state->response.length += blob.length; - data_blob_free(&blob); - return NT_STATUS_OK; } @@ -193,6 +173,7 @@ static NTSTATUS append_afs_token(TALLOC_CTX *mem_ctx, { char *afsname = NULL; char *cell; + char *token; afsname = talloc_strdup(mem_ctx, lp_afs_username_map()); if (afsname == NULL) { @@ -235,15 +216,16 @@ static NTSTATUS append_afs_token(TALLOC_CTX *mem_ctx, *cell = '\0'; cell += 1; - /* Append an AFS token string */ - SAFE_FREE(state->response.extra_data.data); - state->response.extra_data.data = - afs_createtoken_str(afsname, cell); - - if (state->response.extra_data.data != NULL) { - state->response.length += - strlen((const char *)state->response.extra_data.data)+1; + token = afs_createtoken_str(afsname, cell); + if (token == NULL) { + return NT_STATUS_OK; + } + state->response.extra_data.data = talloc_strdup(state->mem_ctx, token); + if (state->response.extra_data.data == NULL) { + return NT_STATUS_NO_MEMORY; } + state->response.length += + strlen((const char *)state->response.extra_data.data)+1; return NT_STATUS_OK; } |