diff options
author | Volker Lendecke <vl@samba.org> | 2014-06-27 09:32:34 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2014-06-30 22:28:14 +0200 |
commit | 9f3e89446847425881e07cafadddc2af8723e8c2 (patch) | |
tree | cd87e746cce73e6b27df6e02d687abc31e47980b /libcli | |
parent | f0f18c56c68325e9a1cf9b422d270a8787c980ba (diff) | |
download | samba-9f3e89446847425881e07cafadddc2af8723e8c2.tar.gz |
libcli: Make smb2cli_create return blobs
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'libcli')
-rw-r--r-- | libcli/smb/smb2cli_create.c | 15 | ||||
-rw-r--r-- | libcli/smb/smbXcli_base.h | 8 | ||||
-rw-r--r-- | libcli/smb/tstream_smbXcli_np.c | 2 |
3 files changed, 19 insertions, 6 deletions
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)) { |