1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-22 22:04:08 +03:00

s3: smbd: Only set xconn->smb1.negprot.done = true after supported_protocols[protocol].proto_reply_fn() succeeds.

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
This commit is contained in:
Jeremy Allison 2019-11-26 12:53:09 -08:00
parent 46899ecf83
commit 8db0c1bff6
2 changed files with 2 additions and 2 deletions

View File

@ -1 +0,0 @@
^samba.tests.smbd_fuzztest

View 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)) {