From 9f3e89446847425881e07cafadddc2af8723e8c2 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 27 Jun 2014 09:32:34 +0000 Subject: libcli: Make smb2cli_create return blobs Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- libcli/smb/smb2cli_create.c | 15 ++++++++++++--- libcli/smb/smbXcli_base.h | 8 ++++++-- libcli/smb/tstream_smbXcli_np.c | 2 +- 3 files changed, 19 insertions(+), 6 deletions(-) (limited to 'libcli') diff --git a/libcli/smb/smb2cli_create.c b/libcli/smb/smb2cli_create.c index bcd674e26a8..0db546c5414 100644 --- a/libcli/smb/smb2cli_create.c +++ b/libcli/smb/smb2cli_create.c @@ -238,7 +238,9 @@ static void smb2cli_create_done(struct tevent_req *subreq) NTSTATUS smb2cli_create_recv(struct tevent_req *req, uint64_t *fid_persistent, uint64_t *fid_volatile, - struct smb_create_returns *cr) + struct smb_create_returns *cr, + TALLOC_CTX *mem_ctx, + struct smb2_create_blobs *blobs) { struct smb2cli_create_state *state = tevent_req_data(req, @@ -253,6 +255,10 @@ NTSTATUS smb2cli_create_recv(struct tevent_req *req, if (cr) { *cr = state->cr; } + if (blobs) { + blobs->num_blobs = state->blobs.num_blobs; + blobs->blobs = talloc_move(mem_ctx, &state->blobs.blobs); + } return NT_STATUS_OK; } @@ -271,7 +277,9 @@ NTSTATUS smb2cli_create(struct smbXcli_conn *conn, struct smb2_create_blobs *blobs, uint64_t *fid_persistent, uint64_t *fid_volatile, - struct smb_create_returns *cr) + struct smb_create_returns *cr, + TALLOC_CTX *mem_ctx, + struct smb2_create_blobs *ret_blobs) { TALLOC_CTX *frame = talloc_stackframe(); struct tevent_context *ev; @@ -302,7 +310,8 @@ NTSTATUS smb2cli_create(struct smbXcli_conn *conn, if (!tevent_req_poll_ntstatus(req, ev, &status)) { goto fail; } - status = smb2cli_create_recv(req, fid_persistent, fid_volatile, cr); + status = smb2cli_create_recv(req, fid_persistent, fid_volatile, cr, + mem_ctx, ret_blobs); fail: TALLOC_FREE(frame); return status; diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h index 8cde85e5827..06015b12425 100644 --- a/libcli/smb/smbXcli_base.h +++ b/libcli/smb/smbXcli_base.h @@ -461,7 +461,9 @@ struct tevent_req *smb2cli_create_send( NTSTATUS smb2cli_create_recv(struct tevent_req *req, uint64_t *fid_persistent, uint64_t *fid_volatile, - struct smb_create_returns *cr); + struct smb_create_returns *cr, + TALLOC_CTX *mem_ctx, + struct smb2_create_blobs *blobs); NTSTATUS smb2cli_create(struct smbXcli_conn *conn, uint32_t timeout_msec, struct smbXcli_session *session, @@ -477,7 +479,9 @@ NTSTATUS smb2cli_create(struct smbXcli_conn *conn, struct smb2_create_blobs *blobs, uint64_t *fid_persistent, uint64_t *fid_volatile, - struct smb_create_returns *cr); + struct smb_create_returns *cr, + TALLOC_CTX *mem_ctx, + struct smb2_create_blobs *ret_blobs); struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, diff --git a/libcli/smb/tstream_smbXcli_np.c b/libcli/smb/tstream_smbXcli_np.c index c32fd6fb144..77a326b012d 100644 --- a/libcli/smb/tstream_smbXcli_np.c +++ b/libcli/smb/tstream_smbXcli_np.c @@ -279,7 +279,7 @@ static void tstream_smbXcli_np_open_done(struct tevent_req *subreq) status = smb2cli_create_recv(subreq, &state->fid_persistent, &state->fid_volatile, - NULL); + NULL, NULL, NULL); } TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { -- cgit v1.2.1