s3: torture: Add SMB1-NEGOTIATE-TCON that shows the SMB1 server crashes on the uninit...
authorJeremy Allison <jra@samba.org>
Sat, 12 Aug 2023 00:18:26 +0000 (17:18 -0700)
committerNoel Power <npower@samba.org>
Tue, 15 Aug 2023 11:12:32 +0000 (11:12 +0000)
Found by Robert Morris <rtm@lcs.mit.edu>.

Adds knownfail.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15432

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Noel Power <nopower@samba.org>
selftest/knownfail.d/smb1_negprot_tcon [new file with mode: 0644]
source3/selftest/tests.py
source3/torture/torture.c

diff --git a/selftest/knownfail.d/smb1_negprot_tcon b/selftest/knownfail.d/smb1_negprot_tcon
new file mode 100644 (file)
index 0000000..4f62094
--- /dev/null
@@ -0,0 +1 @@
+^samba3.smbtorture_s3.smb1.SMB1-NEGOTIATE-TCON.smbtorture\(fileserver_smb1\)
index 8c9ed71c6f78a8b787e174b76892720a1489388f..9d77c49ed48c27b8454d062bcade72647533ccee 100755 (executable)
@@ -241,6 +241,17 @@ plantestsuite("samba3.smbtorture_s3.smb1.SMB1-NEGOTIATE-EXIT",
                 smbtorture3,
                 "-mNT1"])
 
+plantestsuite("samba3.smbtorture_s3.smb1.SMB1-NEGOTIATE-TCON",
+                "fileserver_smb1",
+                [os.path.join(samba3srcdir,
+                              "script/tests/test_smbtorture_s3.sh"),
+                'SMB1-NEGOTIATE-TCON',
+                '//$SERVER_IP/tmp',
+                '$USERNAME',
+                '$PASSWORD',
+                smbtorture3,
+                "-mNT1"])
+
 #
 # MSDFS attribute tests.
 #
index 1e496e74456ad17543d876cd040f2393916a8710..2a8b8dec22f137ced05da31e6828ddfed4fa5fea 100644 (file)
@@ -14999,6 +14999,42 @@ static bool run_smb1_negotiate_exit(int dummy)
        return true;
 }
 
+static bool run_smb1_negotiate_tcon(int dummy)
+{
+       struct cli_state *cli = NULL;
+       uint16_t cnum = 0;
+       uint16_t max_xmit = 0;
+       NTSTATUS status;
+
+       printf("Starting send SMB1 negotiate+tcon.\n");
+       cli = open_nbt_connection();
+       if (cli == NULL) {
+               d_fprintf(stderr, "open_nbt_connection failed!\n");
+               return false;
+       }
+       smbXcli_conn_set_sockopt(cli->conn, sockops);
+
+       status = smbXcli_negprot(cli->conn, 0, PROTOCOL_NT1, PROTOCOL_NT1);
+       if (!NT_STATUS_IS_OK(status)) {
+               d_fprintf(stderr, "smbXcli_negprot failed %s!\n",
+                       nt_errstr(status));
+               return false;
+       }
+        status = cli_raw_tcon(cli,
+                             share,
+                             "",
+                             "?????",
+                             &max_xmit,
+                             &cnum);
+       if (!NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
+               d_fprintf(stderr, "cli_raw_tcon failed - got %s "
+                       "(should get NT_STATUS_ACCESS_DENIED)!\n",
+                       nt_errstr(status));
+               return false;
+       }
+       return true;
+}
+
 static bool run_ign_bad_negprot(int dummy)
 {
        struct tevent_context *ev;
@@ -15735,6 +15771,10 @@ static struct {
                .name  = "SMB1-NEGOTIATE-EXIT",
                .fn    = run_smb1_negotiate_exit,
        },
+       {
+               .name  = "SMB1-NEGOTIATE-TCON",
+               .fn    = run_smb1_negotiate_tcon,
+       },
        {
                .name  = "SMB1-DFS-PATHS",
                .fn    = run_smb1_dfs_paths,