|
@@ -434,6 +434,11 @@ smb_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
|
|
if (dentry->d_name.len > SMB_MAXNAMELEN)
|
|
if (dentry->d_name.len > SMB_MAXNAMELEN)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
|
|
+ /* Do not allow lookup of names with backslashes in */
|
|
|
|
+ error = -EINVAL;
|
|
|
|
+ if (memchr(dentry->d_name.name, '\\', dentry->d_name.len))
|
|
|
|
+ goto out;
|
|
|
|
+
|
|
lock_kernel();
|
|
lock_kernel();
|
|
error = smb_proc_getattr(dentry, &finfo);
|
|
error = smb_proc_getattr(dentry, &finfo);
|
|
#ifdef SMBFS_PARANOIA
|
|
#ifdef SMBFS_PARANOIA
|