Skip to content
  • Mark Syms's avatar
    CIFS: handle guest access errors to Windows shares · 22979776
    Mark Syms authored
    [ Upstream commit 40920c2b ]
    
    Commit 1a967d6c
    
     ("correctly to
    anonymous authentication for the NTLM(v2) authentication") introduces
    a regression in handling errors related to attempting a guest
    connection to a Windows share which requires authentication. This
    should result in a permission denied error but actually causes the
    kernel module to enter a never-ending loop trying to follow a DFS
    referal which doesn't exist.
    
    The base cause of this is the failure now occurs later in the process
    during tree connect and not at the session setup setup and all errors
    in tree connect are interpreted as needing to follow the DFS paths
    which isn't in this case correct. So, check the returned error against
    EACCES and fail if this is returned error.
    
    Feedback from Aurelien:
    
      PS> net user guest /activate:no
        PS> mkdir C:\guestshare
          PS> icacls C:\guestshare /grant 'Everyone:(OI)(CI)F'
            PS> new-smbshare -name guestshare -path C:\guestshare -fullaccess Everyone
    
            I've tested v3.10, v4.4, master, master+your patch using default options
            (empty or no user "NU") and user=abc (U).
    
            NT_LOGON_FAILURE in session setup: LF
            This is what you seem to have in 3.10.
    
            NT_ACCESS_DENIED in tree connect to the share: AD
            This is what you get before your infinite loop.
    
                         |   NU       U
                         --------------------------------
                         3.10         |   LF       LF
                         4.4          |   LF       LF
                         master       |   AD       LF
                         master+patch |   AD       LF
    
                         No infinite DFS loop :(
                         All these issues result in mount failing very fast with permission denied.
    
                         I guess it could be from either the Windows version or the share/folder
                         ACL. A deeper analysis of the packets might reveal more.
    
                         In any case I did not notice any issues for on a basic DFS setup with
                         the patch so I don't think it introduced any regressions, which is
                         probably all that matters. It still bothers me a little I couldn't hit
                         the bug.
    
                         I've included kernel output w/ debugging output and network capture of
                         my tests if anyone want to have a look at it. (master+patch = ml-guestfix).
    
    Signed-off-by: default avatarMark Syms <mark.syms@citrix.com>
    Reviewed-by: default avatarAurelien Aptel <aaptel@suse.com>
    Tested-by: default avatarAurelien Aptel <aaptel@suse.com>
    Acked-by: default avatarPavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: default avatarSteve French <smfrench@gmail.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    22979776