s3:auth: make use of make_{server,session}_info_anonymous()
authorStefan Metzmacher <metze@samba.org>
Fri, 2 Mar 2018 13:40:19 +0000 (14:40 +0100)
committerRalph Boehme <slow@samba.org>
Fri, 16 Mar 2018 02:03:31 +0000 (03:03 +0100)
It's important to have them separated from make_{server,session}_info_guest(),
because there's a fundamental difference between anonymous (the client requested
no authentication) and guest (the server lies about the authentication failure).

When it's really an anonymous connection, we should reflect that in the
resulting session info.

This should fix a problem where Windows 10 tries to join
a Samba hosted NT4 domain and has SMB2/3 enabled.

We no longer return SMB_SETUP_GUEST or SMB2_SESSION_FLAG_IS_GUEST
for true anonymous connections.

The commit message from a few commit before shows the resulting
auth_session_info change.

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

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Fri Mar 16 03:03:31 CET 2018 on sn-devel-144

selftest/knownfail.d/anonymous-guest [deleted file]
source3/auth/auth_builtin.c
source3/auth/auth_ntlmssp.c

diff --git a/selftest/knownfail.d/anonymous-guest b/selftest/knownfail.d/anonymous-guest
deleted file mode 100644 (file)
index a134cec..0000000
+++ /dev/null
@@ -1 +0,0 @@
-^samba3.smbtorture_s3.*nt4_dc.*.SMB2-ANONYMOUS.smbtorture
index 0fa95d9f16dc1e74e9a08c5d4a7bbf76ab1f54f3..a2d95a77330fe193b0ec140e6627e57303648f0a 100644 (file)
@@ -81,7 +81,7 @@ static NTSTATUS check_guest_security(const struct auth_context *auth_context,
                break;
        }
 
-       return make_server_info_guest(NULL, server_info);
+       return make_server_info_anonymous(NULL, server_info);
 }
 
 /* Guest modules initialisation */
index fd629fd9a0304ab5fdf1a9a0c2ce570c3bc68298..2e345e17571245637ec6649be862cf31ea0e0f76 100644 (file)
@@ -65,10 +65,7 @@ NTSTATUS auth3_generate_session_info(struct auth4_context *auth_context,
 
                cmp = dom_sid_compare(sid, &global_sid_Anonymous);
                if (cmp == 0) {
-                       /*
-                        * TODO: use auth_anonymous_session_info() here?
-                        */
-                       return make_session_info_guest(mem_ctx, session_info);
+                       return make_session_info_anonymous(mem_ctx, session_info);
                }
 
                return NT_STATUS_INTERNAL_ERROR;