summaryrefslogtreecommitdiff
path: root/libcli
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2010-06-21 16:13:14 +0200
committerStefan Metzmacher <metze@samba.org>2010-06-21 16:16:15 +0200
commit67a24fe9333836e4d33c167ea01f2efdc005bacd (patch)
tree1671bc30725ebd2523bd2c9b58fd57a5166e79b5 /libcli
parente9e80a36e461a0d07cdc9d1be27e60624133b096 (diff)
downloadsamba-67a24fe9333836e4d33c167ea01f2efdc005bacd.tar.gz
samba-67a24fe9333836e4d33c167ea01f2efdc005bacd.tar.bz2
samba-67a24fe9333836e4d33c167ea01f2efdc005bacd.zip
libcli/named_pipe_auth: fix memory handling for temporary data
In a tevent_req based function tevent_req_create() should be the first function! If it fails it's the only reason, why the function could every return NULL. And all temporary data belongs to 'state' and gets free'ed by tevent_req_received() in the _recv function. metze
Diffstat (limited to 'libcli')
-rw-r--r--libcli/named_pipe_auth/npa_tstream.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libcli/named_pipe_auth/npa_tstream.c b/libcli/named_pipe_auth/npa_tstream.c
index 351858408c..59d3a97dc0 100644
--- a/libcli/named_pipe_auth/npa_tstream.c
+++ b/libcli/named_pipe_auth/npa_tstream.c
@@ -73,11 +73,7 @@ struct tevent_req *tstream_npa_connect_send(TALLOC_CTX *mem_ctx,
struct tevent_req *subreq;
int ret;
enum ndr_err_code ndr_err;
- char *lower_case_npipe = strlower_talloc(mem_ctx, npipe);
-
- if (!lower_case_npipe) {
- return NULL;
- }
+ char *lower_case_npipe;
req = tevent_req_create(mem_ctx, &state,
struct tstream_npa_connect_state);
@@ -87,6 +83,11 @@ struct tevent_req *tstream_npa_connect_send(TALLOC_CTX *mem_ctx,
state->caller.ev = ev;
+ lower_case_npipe = strlower_talloc(state, npipe);
+ if (tevent_req_nomem(lower_case_npipe, req)) {
+ goto post;
+ }
+
state->unix_path = talloc_asprintf(state, "%s/%s",
directory,
lower_case_npipe);