summaryrefslogtreecommitdiff
path: root/source3/libsmb/clifile.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2009-07-27 12:36:31 +0200
committerVolker Lendecke <vl@samba.org>2009-07-27 12:47:20 +0200
commite8abc36d2a8c611ecfefa9ef8e798cf2b072a432 (patch)
treeeca37bd6d5f683c6abda12ed77503e3925914d4c /source3/libsmb/clifile.c
parentfb03bbfa09c9df01c349f19a28c05f9bfd1cf4dc (diff)
downloadsamba-e8abc36d2a8c611ecfefa9ef8e798cf2b072a432.tar.gz
samba-e8abc36d2a8c611ecfefa9ef8e798cf2b072a432.tar.bz2
samba-e8abc36d2a8c611ecfefa9ef8e798cf2b072a432.zip
Fix a valgrind error in cli_ctemp_done
For performance reasons cli_smb_recv does not make copies of the buffers we received from the client, so both "vwv" and "bytes" vanish with TALLOC_FREE(subreq). I know this is a bit counter-intuitive, but I think in this case it's justified not to make copies. Comments?
Diffstat (limited to 'source3/libsmb/clifile.c')
-rw-r--r--source3/libsmb/clifile.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index 5ea0579839..696c979802 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -4098,14 +4098,16 @@ static void cli_ctemp_done(struct tevent_req *subreq)
uint8_t *bytes = NULL;
status = cli_smb_recv(subreq, 1, &wcnt, &vwv, &num_bytes, &bytes);
- TALLOC_FREE(subreq);
if (!NT_STATUS_IS_OK(status)) {
+ TALLOC_FREE(subreq);
tevent_req_nterror(req, status);
return;
}
state->fnum = SVAL(vwv+0, 0);
+ TALLOC_FREE(subreq);
+
/* From W2K3, the result is just the ASCII name */
if (num_bytes < 2) {
tevent_req_nterror(req, NT_STATUS_DATA_ERROR);