• Suresh Jayaraman's avatar
    cifs: fix parsing of password mount option · e73f843a
    Suresh Jayaraman authored
    The double delimiter check that allows a comma in the password parsing code is
    unconditional. We set "tmp_end" to the end of the string and we continue to
    check for double delimiter. In the case where the password doesn't contain a
    comma we end up setting tmp_end to NULL and eventually setting "options" to
    "end". This results in the premature termination of the options string and hence
    the values of UNCip and UNC are being set to NULL. This results in mount failure
    with "Connecting to DFS root not implemented yet" error.
    
    This error is usually not noticable as we have password as the last option in
    the superblock mountdata. But when we call expand_dfs_referral() from
    cifs_mount() and try to compose mount options for the submount, the resulting
    mountdata will be of the form
    
       ",ver=1,user=foo,pass=bar,ip=x.x.x.x,unc=\\server\share"
    
    and hence results in the above error. This bug has been seen with older NAS
    servers running Samba 3.0.24.
    
    Fix this by moving the double delimiter check inside the conditional loop.
    
    Changes since -v1
    
       - removed the wrong strlen() micro optimization.
    Signed-off-by: default avatarSuresh Jayaraman <sjayaraman@suse.com>
    Acked-by: default avatarSachin Prabhu <sprabhu@redhat.com>
    Cc: stable@vger.kernel.org [3.1+]
    Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
    e73f843a
connect.c 115 KB