do not treat non-symlink reparse points as valid symlinks
authorSteve French <smfrench@us.ibm.com>
Sat, 28 Sep 2013 23:24:12 +0000 (18:24 -0500)
committerSteve French <smfrench@gmail.com>
Sun, 6 Oct 2013 02:54:18 +0000 (21:54 -0500)
commitc31f330719b7331b2112a5525fe5941a99ac223d
tree14e6f0534e820bc30f4fb7e2e876daf072edb0de
parente62063d69911886a5a92c719d262a2a87e1e5b60
do not treat non-symlink reparse points as valid symlinks

Windows 8 and later can create NFS symlinks (within reparse points)
which we were assuming were normal NTFS symlinks and thus reporting
corrupt paths for.  Add check for reparse points to make sure that
they really are normal symlinks before we try to parse the pathname.

We also should not be parsing other types of reparse points (DFS
junctions etc) as if they were a  symlink so return EOPNOTSUPP
on those.  Also fix endian errors (we were not parsing symlink
lengths as little endian).

This fixes commit d244bf2dfbebfded05f494ffd53659fa7b1e32c1
which implemented follow link for non-Unix CIFS mounts

CC: Stable <stable@kernel.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Signed-off-by: Steve French <smfrench@gmail.com>
fs/cifs/cifspdu.h
fs/cifs/cifssmb.c
fs/cifs/smbfsctl.h