s3: smbd: Only set xconn->smb1.negprot.done = true after supported_protocols[protocol...
authorJeremy Allison <jra@samba.org>
Tue, 26 Nov 2019 20:53:09 +0000 (12:53 -0800)
committerKarolin Seeger <kseeger@samba.org>
Fri, 13 Dec 2019 12:30:56 +0000 (12:30 +0000)
Otherwise we can end up with negprot.done set, but
without smbXsrv_connection_init_tables() being called.

This can cause a client self-crash.

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

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Wed Dec  4 21:27:24 UTC 2019 on sn-devel-184

(cherry picked from commit 8db0c1bff6f42feabd2e4d9dfb13ae12cc29607b)

Autobuild-User(v4-11-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-11-test): Fri Dec 13 12:30:57 UTC 2019 on sn-devel-184

selftest/knownfail.d/smb1_fuzz_smbd [deleted file]
source3/smbd/negprot.c

diff --git a/selftest/knownfail.d/smb1_fuzz_smbd b/selftest/knownfail.d/smb1_fuzz_smbd
deleted file mode 100644 (file)
index 82b1b26..0000000
+++ /dev/null
@@ -1 +0,0 @@
-^samba.tests.smbd_fuzztest
index 8317dc490869922f3125ee5791131439921f57e4..e77c8f52261012ac57f541f5222b9f192a5935fc 100644 (file)
@@ -588,7 +588,6 @@ void reply_negprot(struct smb_request *req)
                END_PROFILE(SMBnegprot);
                exit_server_cleanly("multiple negprot's are not permitted");
        }
-       xconn->smb1.negprot.done = true;
 
        if (req->buflen == 0) {
                DEBUG(0, ("negprot got no protocols\n"));
@@ -778,6 +777,8 @@ void reply_negprot(struct smb_request *req)
 
        DBG_INFO("negprot index=%zu\n", choice);
 
+       xconn->smb1.negprot.done = true;
+
        /* We always have xconn->smb1.signing_state also for >= SMB2_02 */
        signing_required = smb_signing_is_mandatory(xconn->smb1.signing_state);
        if (signing_required && (chosen_level < PROTOCOL_NT1)) {