• M
    CIFS: handle guest access errors to Windows shares · 40920c2b
    Mark Syms 提交于
    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: NMark Syms <mark.syms@citrix.com>
    Reviewed-by: NAurelien Aptel <aaptel@suse.com>
    Tested-by: NAurelien Aptel <aaptel@suse.com>
    Acked-by: NPavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: NSteve French <smfrench@gmail.com>
    40920c2b
connect.c 113.5 KB