The branch, master has been updated
       via  dec34db s4:torture: add a test for 0 byte sized streams
       via  e9c5b63 s4: torture: Fix double-free on error.
      from  a1187bb dbwrap: Remove talloc from dbwrap_watch_record_stored()

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit dec34db53e2cc38938ad2f404847f50be054d2f2
Author: Ralph Boehme <[email protected]>
Date:   Tue Sep 22 03:15:14 2015 +0200

    s4:torture: add a test for 0 byte sized streams
    
    Signed-off-by: Ralph Boehme <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>
    
    Autobuild-User(master): Jeremy Allison <[email protected]>
    Autobuild-Date(master): Tue Sep 22 23:46:00 CEST 2015 on sn-devel-104

commit e9c5b63167ef12b897c47a36e2fb48f8838ea499
Author: Herb Lewis <[email protected]>
Date:   Tue Sep 22 11:39:54 2015 -0700

    s4: torture: Fix double-free on error.
    
    Signed-off-by: Herb Lewis <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 source4/torture/basic/base.c   |  1 -
 source4/torture/smb2/streams.c | 74 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 1 deletion(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/basic/base.c b/source4/torture/basic/base.c
index 6a792b2..e8ae4b6 100644
--- a/source4/torture/basic/base.c
+++ b/source4/torture/basic/base.c
@@ -447,7 +447,6 @@ static bool run_tcon_test(struct torture_context *tctx, 
struct smbcli_state *cli
        if (NT_STATUS_IS_ERR(smbcli_tconX(cli, share, "?????", password))) {
                torture_result(tctx, TORTURE_FAIL, "%s refused 2nd tree connect 
(%s)\n", host,
                           smbcli_errstr(cli->tree));
-               talloc_free(cli);
                return false;
        }
 
diff --git a/source4/torture/smb2/streams.c b/source4/torture/smb2/streams.c
index 2db893c..d9098af 100644
--- a/source4/torture/smb2/streams.c
+++ b/source4/torture/smb2/streams.c
@@ -484,6 +484,79 @@ done:
        return ret;
 }
 
+static bool test_zero_byte_stream(struct torture_context *tctx,
+                                 struct smb2_tree *tree)
+{
+       TALLOC_CTX *mem_ctx = talloc_new(tctx);
+       NTSTATUS status;
+       union smb_open io;
+       const char *fname = DNAME "\\stream.txt";
+       const char *sname;
+       bool ret = true;
+       struct smb2_handle h, bh;
+       const char *streams[] = { "::$DATA", ":foo:$DATA" };
+
+       sname = talloc_asprintf(mem_ctx, "%s:%s", fname, "foo");
+
+       smb2_util_unlink(tree, fname);
+       smb2_deltree(tree, DNAME);
+
+       status = torture_smb2_testdir(tree, DNAME, &h);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "testdir");
+       smb2_util_close(tree, h);
+
+       torture_comment(tctx, "(%s) Check 0 byte named stream\n",
+           __location__);
+
+       /* Create basefile */
+       ZERO_STRUCT(io);
+       io.smb2.in.create_disposition = NTCREATEX_DISP_CREATE;
+       io.smb2.in.fname = fname;
+       io.smb2.in.desired_access = SEC_FILE_READ_ATTRIBUTE |
+               SEC_FILE_WRITE_ATTRIBUTE |
+               SEC_FILE_READ_DATA |
+               SEC_FILE_WRITE_DATA;
+       status = smb2_create(tree, mem_ctx, &(io.smb2));
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "create");
+       smb2_util_close(tree, io.smb2.out.file.handle);
+
+       /* Create named stream and close it */
+       ZERO_STRUCT(io);
+       io.smb2.in.create_disposition = NTCREATEX_DISP_CREATE;
+       io.smb2.in.fname = sname;
+       io.smb2.in.desired_access = SEC_FILE_READ_ATTRIBUTE |
+               SEC_FILE_WRITE_ATTRIBUTE |
+               SEC_FILE_READ_DATA |
+               SEC_FILE_WRITE_DATA;
+       status = smb2_create(tree, mem_ctx, &(io.smb2));
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "create");
+       smb2_util_close(tree, io.smb2.out.file.handle);
+
+       /*
+        * Check stream list, the 0 byte stream MUST be returned by
+        * the server.
+        */
+       ZERO_STRUCT(io);
+       io.smb2.in.fname = fname;
+       io.smb2.in.create_disposition = NTCREATEX_DISP_OPEN;
+       io.smb2.in.desired_access = SEC_FILE_READ_ATTRIBUTE |
+               SEC_FILE_WRITE_ATTRIBUTE |
+               SEC_FILE_READ_DATA |
+               SEC_FILE_WRITE_DATA;
+       status = smb2_create(tree, mem_ctx, &(io.smb2));
+       bh = io.smb2.out.file.handle;
+
+       ret = check_stream_list(tree,tctx, fname, 2, streams, bh);
+       torture_assert_goto(tctx, ret == true, ret, done, "smb2_create");
+       smb2_util_close(tree, bh);
+
+done:
+       smb2_deltree(tree, DNAME);
+       talloc_free(mem_ctx);
+
+       return ret;
+}
+
 /*
   test stream sharemodes
 */
@@ -1754,6 +1827,7 @@ struct torture_suite *torture_smb2_streams_init(void)
        torture_suite_add_1smb2_test(suite, "create-disposition", 
test_stream_create_disposition);
        torture_suite_add_1smb2_test(suite, "attributes", 
test_stream_attributes);
        torture_suite_add_1smb2_test(suite, "delete", test_stream_delete);
+       torture_suite_add_1smb2_test(suite, "zero-byte", test_zero_byte_stream);
 
        suite->description = talloc_strdup(suite, "SMB2-STREAM tests");
 


-- 
Samba Shared Repository

Reply via email to