The branch, master has been updated via 48d954b Fix the compound tests to correctly pass against Windows when run with --signing=required. via 1624d83 Add new function smbXcli_session_copy(), to be used when creating compound SMB2 requests. from 7b0b1d6 smbd: Fix a typo
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 48d954b90e6aa14721d236180df959a038416672 Author: Jeremy Allison <j...@samba.org> Date: Mon Jan 28 16:52:11 2013 -0800 Fix the compound tests to correctly pass against Windows when run with --signing=required. Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Richard Sharpe <realrichardsha...@gmail.org> Autobuild-User(master): Richard Sharpe <sha...@samba.org> Autobuild-Date(master): Thu Jan 31 03:53:55 CET 2013 on sn-devel-104 commit 1624d83fdeb675ee4032f5d3cabcf86d5b05a3cb Author: Jeremy Allison <j...@samba.org> Date: Mon Jan 28 16:51:25 2013 -0800 Add new function smbXcli_session_copy(), to be used when creating compound SMB2 requests. Copies the signing state needed to make client compound requests work on signed connections. Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com> ----------------------------------------------------------------------- Summary of changes: libcli/smb/smbXcli_base.c | 27 +++++++++++++++++++++++++++ libcli/smb/smbXcli_base.h | 2 ++ source4/torture/smb2/compound.c | 12 ++++++------ 3 files changed, 35 insertions(+), 6 deletions(-) Changeset truncated at 500 lines: diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c index c547515..421e884 100644 --- a/libcli/smb/smbXcli_base.c +++ b/libcli/smb/smbXcli_base.c @@ -4482,6 +4482,33 @@ struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx, return session; } +struct smbXcli_session *smbXcli_session_copy(TALLOC_CTX *mem_ctx, + struct smbXcli_session *src) +{ + struct smbXcli_session *session; + + session = talloc_zero(mem_ctx, struct smbXcli_session); + if (session == NULL) { + return NULL; + } + session->smb2 = talloc_zero(session, struct smb2cli_session); + if (session->smb2 == NULL) { + talloc_free(session); + return NULL; + } + + session->conn = src->conn; + *session->smb2 = *src->smb2; + session->smb2_channel = src->smb2_channel; + session->disconnect_expired = src->disconnect_expired; + + DLIST_ADD_END(src->conn->sessions, session, struct smbXcli_session *); + talloc_set_destructor(session, smbXcli_session_destructor); + + return session; +} + + NTSTATUS smbXcli_session_application_key(struct smbXcli_session *session, TALLOC_CTX *mem_ctx, DATA_BLOB *key) diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h index b720bc6..f7b60d3 100644 --- a/libcli/smb/smbXcli_base.h +++ b/libcli/smb/smbXcli_base.h @@ -260,6 +260,8 @@ NTSTATUS smbXcli_negprot(struct smbXcli_conn *conn, struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx, struct smbXcli_conn *conn); +struct smbXcli_session *smbXcli_session_copy(TALLOC_CTX *mem_ctx, + struct smbXcli_session *src); NTSTATUS smbXcli_session_application_key(struct smbXcli_session *session, TALLOC_CTX *mem_ctx, DATA_BLOB *key); diff --git a/source4/torture/smb2/compound.c b/source4/torture/smb2/compound.c index e75f682..4a47e14 100644 --- a/source4/torture/smb2/compound.c +++ b/source4/torture/smb2/compound.c @@ -92,8 +92,8 @@ static bool test_compound_related1(struct torture_context *tctx, 0, /* capabilities */ 0 /* maximal_access */); - tree->session->smbXcli = smbXcli_session_create(tree->session, - tree->session->transport->conn); + tree->session->smbXcli = smbXcli_session_copy(tree->session, + tree->session->smbXcli); smb2cli_session_set_id_and_flags(tree->session->smbXcli, UINT64_MAX, 0); req[1] = smb2_close_send(tree, &cl); @@ -171,8 +171,8 @@ static bool test_compound_related2(struct torture_context *tctx, 0, /* capabilities */ 0 /* maximal_access */); - tree->session->smbXcli = smbXcli_session_create(tree->session, - tree->session->transport->conn); + tree->session->smbXcli = smbXcli_session_copy(tree->session, + tree->session->smbXcli); smb2cli_session_set_id_and_flags(tree->session->smbXcli, UINT64_MAX, 0); req[1] = smb2_close_send(tree, &cl); @@ -459,8 +459,8 @@ static bool test_compound_invalid2(struct torture_context *tctx, 0, /* capabilities */ 0 /* maximal_access */); - tree->session->smbXcli = smbXcli_session_create(tree->session, - tree->session->transport->conn); + tree->session->smbXcli = smbXcli_session_copy(tree->session, + tree->session->smbXcli); smb2cli_session_set_id_and_flags(tree->session->smbXcli, UINT64_MAX, 0); req[1] = smb2_close_send(tree, &cl); -- Samba Shared Repository