cifs: check MaxPathNameComponentLength != 0 before using it
authorRonnie Sahlberg <lsahlber@redhat.com>
Mon, 30 Oct 2017 02:28:03 +0000 (13:28 +1100)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 11 Nov 2017 13:34:38 +0000 (13:34 +0000)
commit f74bc7c6679200a4a83156bb89cbf6c229fe8ec0 upstream.

And fix tcon leak in error path.

Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <smfrench@gmail.com>
Reviewed-by: David Disseldorp <ddiss@samba.org>
[bwh: Backported to 3.2: cifs_tcon pointer is tcon, and there's no leak to fix]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/cifs/dir.c

index a1c99c4..22758b1 100644 (file)
@@ -521,7 +521,8 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
        oplock = pTcon->ses->server->oplocks ? REQ_OPLOCK : 0;
 
        /* Don't allow path components longer than the server max. */
-       if (unlikely(direntry->d_name.len >
+       if (unlikely(pTcon->fsAttrInfo.MaxPathNameComponentLength &&
+                    direntry->d_name.len >
                     le32_to_cpu(pTcon->fsAttrInfo.MaxPathNameComponentLength))) {
                rc = -ENAMETOOLONG;
                goto lookup_out;