The branch, master has been updated via af92f1b s4.torture.smb2/session : Replace CHECK_VAL with torture macros via ad85c89 s3:smb2_server: make the logic of SMB2_CANCEL DLIST_REMOVE() clearer from d66863b manpage: corrected small typo error
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit af92f1b0629acecc31b78bba67e0bb8d707e3606 Author: Anoop C S <anoo...@redhat.com> Date: Tue Oct 13 14:25:20 2015 +0530 s4.torture.smb2/session : Replace CHECK_VAL with torture macros Signed-off-by: Anoop C S <anoo...@redhat.com> Reviewed-by: Michael Adam <ob...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Tue Nov 3 03:17:14 CET 2015 on sn-devel-104 commit ad85c8905184d125a2a38569f7955ccbf443ebcd Author: Stefan Metzmacher <me...@samba.org> Date: Mon Nov 2 13:40:24 2015 +0100 s3:smb2_server: make the logic of SMB2_CANCEL DLIST_REMOVE() clearer BUG: https://bugzilla.samba.org/show_bug.cgi?id=11581 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: source3/smbd/smb2_server.c | 12 ++++- source4/torture/smb2/session.c | 105 +++++++++++++++++++++++++---------------- 2 files changed, 75 insertions(+), 42 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index 2692fb8..cdcead0 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -1705,6 +1705,14 @@ static NTSTATUS smbd_smb2_request_process_cancel(struct smbd_smb2_request *req) search_message_id = BVAL(inhdr, SMB2_HDR_MESSAGE_ID); search_async_id = BVAL(inhdr, SMB2_HDR_PID); + /* + * We don't need the request anymore cancel requests never + * have a response. + * + * We defer the TALLOC_FREE(req) to the caller. + */ + DLIST_REMOVE(xconn->smb2.requests, req); + for (cur = xconn->smb2.requests; cur; cur = cur->next) { const uint8_t *outhdr; uint64_t message_id; @@ -2365,8 +2373,10 @@ NTSTATUS smbd_smb2_request_dispatch(struct smbd_smb2_request *req) /* * We don't need the request anymore cancel requests never * have a response. + * + * smbd_smb2_request_process_cancel() already called + * DLIST_REMOVE(xconn->smb2.requests, req); */ - DLIST_REMOVE(xconn->smb2.requests, req); TALLOC_FREE(req); break; diff --git a/source4/torture/smb2/session.c b/source4/torture/smb2/session.c index 7bb9f64..9d7cc4b 100644 --- a/source4/torture/smb2/session.c +++ b/source4/torture/smb2/session.c @@ -31,23 +31,22 @@ #include "libcli/resolve/resolve.h" #include "lib/param/param.h" -#define CHECK_VAL(v, correct) do { \ - if ((v) != (correct)) { \ - torture_result(tctx, TORTURE_FAIL, "(%s): wrong value for %s got 0x%x - should be 0x%x\n", \ - __location__, #v, (int)v, (int)correct); \ - ret = false; \ - }} while (0) - -#define CHECK_CREATED(__io, __created, __attribute) \ - do { \ - CHECK_VAL((__io)->out.create_action, NTCREATEX_ACTION_ ## __created); \ - CHECK_VAL((__io)->out.alloc_size, 0); \ - CHECK_VAL((__io)->out.size, 0); \ - CHECK_VAL((__io)->out.file_attr, (__attribute)); \ - CHECK_VAL((__io)->out.reserved2, 0); \ +#define CHECK_CREATED(tctx, __io, __created, __attribute) \ + do { \ + torture_assert_int_equal(tctx, (__io)->out.create_action, \ + NTCREATEX_ACTION_ ## __created, \ + "out.create_action incorrect"); \ + torture_assert_int_equal(tctx, (__io)->out.alloc_size, 0, \ + "out.alloc_size incorrect"); \ + torture_assert_int_equal(tctx, (__io)->out.size, 0, \ + "out.size incorrect"); \ + torture_assert_int_equal(tctx, (__io)->out.file_attr, \ + (__attribute), \ + "out.file_attr incorrect"); \ + torture_assert_int_equal(tctx, (__io)->out.reserved2, 0, \ + "out.reserverd2 incorrect"); \ } while(0) - /** * basic test for doing a session reconnect */ @@ -81,8 +80,10 @@ bool test_session_reconnect1(struct torture_context *tctx, struct smb2_tree *tre "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* disconnect, reconnect and then do durable reopen */ previous_session_id = smb2cli_session_current_id(tree->session->smbXcli); @@ -112,8 +113,10 @@ bool test_session_reconnect1(struct torture_context *tctx, struct smb2_tree *tre torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "smb2_create failed"); - CHECK_CREATED(&io2, EXISTED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io2.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io2, EXISTED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); _h2 = io2.out.file.handle; h2 = &_h2; @@ -170,8 +173,10 @@ bool test_session_reconnect2(struct torture_context *tctx, struct smb2_tree *tre "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* disconnect, reconnect and then do durable reopen */ previous_session_id = smb2cli_session_current_id(tree->session->smbXcli); @@ -231,8 +236,10 @@ bool test_session_reauth1(struct torture_context *tctx, struct smb2_tree *tree) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); status = smb2_session_setup_spnego(tree->session, cmdline_credentials, @@ -305,8 +312,10 @@ bool test_session_reauth2(struct torture_context *tctx, struct smb2_tree *tree) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* re-authenticate as anonymous */ @@ -394,8 +403,10 @@ bool test_session_reauth3(struct torture_context *tctx, struct smb2_tree *tree) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* get the security descriptor */ @@ -505,8 +516,10 @@ bool test_session_reauth4(struct torture_context *tctx, struct smb2_tree *tree) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* get the security descriptor */ @@ -630,7 +643,7 @@ bool test_session_reauth5(struct torture_context *tctx, struct smb2_tree *tree) snprintf(fname, sizeof(fname), "%s\\file.dat", dname); ok = smb2_util_setup_dir(tctx, tree, dname); - CHECK_VAL(ok, true); + torture_assert(tctx, ok, "smb2_util_setup_dir not ok"); status = torture_smb2_testdir(tree, dname, &_dh1); torture_assert_ntstatus_ok_goto(tctx, status, ret, done, @@ -646,8 +659,10 @@ bool test_session_reauth5(struct torture_context *tctx, struct smb2_tree *tree) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* get the security descriptor */ @@ -884,8 +899,10 @@ bool test_session_reauth5(struct torture_context *tctx, struct smb2_tree *tree) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, EXISTED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, EXISTED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* try to access the file via the old handle */ @@ -961,8 +978,10 @@ bool test_session_reauth6(struct torture_context *tctx, struct smb2_tree *tree) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* * reauthentication with invalid credentials: @@ -979,7 +998,7 @@ bool test_session_reauth6(struct torture_context *tctx, struct smb2_tree *tree) ok = cli_credentials_set_password(broken_creds, corrupted_password, CRED_SPECIFIED); - CHECK_VAL(ok, true); + torture_assert(tctx, ok, "cli_credentials_set_password not ok"); status = smb2_session_setup_spnego(tree->session, broken_creds, @@ -1085,8 +1104,10 @@ static bool test_session_expire1(struct torture_context *tctx) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); /* get the security descriptor */ @@ -1186,8 +1207,10 @@ bool test_session_bind1(struct torture_context *tctx, struct smb2_tree *tree1) "smb2_create failed"); _h1 = io1.out.file.handle; h1 = &_h1; - CHECK_CREATED(&io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); - CHECK_VAL(io1.out.oplock_level, smb2_util_oplock_level("b")); + CHECK_CREATED(tctx, &io1, CREATED, FILE_ATTRIBUTE_ARCHIVE); + torture_assert_int_equal(tctx, io1.out.oplock_level, + smb2_util_oplock_level("b"), + "oplock_level incorrect"); status = smb2_connect(tctx, host, -- Samba Shared Repository