s3:smbd: fix anonymous authentication if signing is mandatory
authorStefan Metzmacher <metze@samba.org>
Wed, 18 May 2016 07:56:02 +0000 (09:56 +0200)
committerKarolin Seeger <kseeger@samba.org>
Mon, 30 May 2016 09:09:19 +0000 (11:09 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11910

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
(cherry picked from commit 2b67554e6ccca6dd4616dea672890e0a56bed8bd)

source3/smbd/sesssetup.c

index 77b80776cbe9fb62bbcb3df672569267913346d1..5d92af125b033e6325b1395d0dc7e6c3d897f21a 100644 (file)
@@ -135,6 +135,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
        struct smbXsrv_connection *xconn = req->xconn;
        struct smbd_server_connection *sconn = req->sconn;
        uint16_t action = 0;
+       bool is_authenticated = false;
        NTTIME now = timeval_to_nttime(&req->request_time);
        struct smbXsrv_session *session = NULL;
        uint16_t smb_bufsize = SVAL(req->vwv+2, 0);
@@ -328,12 +329,13 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
                sconn->num_users++;
 
                if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
+                       is_authenticated = true;
                        session->compat->homes_snum =
                                register_homes_share(session_info->unix_info->unix_name);
                }
 
                if (srv_is_signing_negotiated(xconn) &&
-                   action == 0 &&
+                   is_authenticated &&
                    session->global->signing_key.length > 0)
                {
                        /*
@@ -592,6 +594,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
        struct auth_session_info *session_info = NULL;
        uint16 smb_flag2 = req->flags2;
        uint16_t action = 0;
+       bool is_authenticated = false;
        NTTIME now = timeval_to_nttime(&req->request_time);
        struct smbXsrv_session *session = NULL;
        NTSTATUS nt_status;
@@ -1029,12 +1032,13 @@ void reply_sesssetup_and_X(struct smb_request *req)
        sconn->num_users++;
 
        if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
+               is_authenticated = true;
                session->compat->homes_snum =
                        register_homes_share(session_info->unix_info->unix_name);
        }
 
        if (srv_is_signing_negotiated(xconn) &&
-           action == 0 &&
+           is_authenticated &&
            session->global->signing_key.length > 0)
        {
                /*