diff options
author | Steve French <sfrench@us.ibm.com> | 2006-04-21 14:18:37 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2006-04-21 14:18:37 -0400 |
commit | 296034f7de8bdf111984ce1630ac598a9c94a253 (patch) | |
tree | b8918c659c780f8fcdf3d8d82385da14a9fc7176 | |
parent | 0bd4fa977f81c914eb8bada00284d0933825900e (diff) |
[CIFS] Don't allow a backslash in a path component
Unless Posix paths have been negotiated, the backslash, "\", is not a valid
character in a path component.
Signed-off-by: Dave Kleikamp <shaggy@austin.ibm.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r-- | fs/cifs/dir.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c index 3830dfeb31cf..82315edc77d7 100644 --- a/fs/cifs/dir.c +++ b/fs/cifs/dir.c | |||
@@ -436,6 +436,20 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, struct name | |||
436 | cifs_sb = CIFS_SB(parent_dir_inode->i_sb); | 436 | cifs_sb = CIFS_SB(parent_dir_inode->i_sb); |
437 | pTcon = cifs_sb->tcon; | 437 | pTcon = cifs_sb->tcon; |
438 | 438 | ||
439 | /* | ||
440 | * Don't allow the separator character in a path component. | ||
441 | * The VFS will not allow "/", but "\" is allowed by posix. | ||
442 | */ | ||
443 | if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)) { | ||
444 | int i; | ||
445 | for (i = 0; i < direntry->d_name.len; i++) | ||
446 | if (direntry->d_name.name[i] == '\\') { | ||
447 | cFYI(1, ("Invalid file name")); | ||
448 | FreeXid(xid); | ||
449 | return ERR_PTR(-EINVAL); | ||
450 | } | ||
451 | } | ||
452 | |||
439 | /* can not grab the rename sem here since it would | 453 | /* can not grab the rename sem here since it would |
440 | deadlock in the cases (beginning of sys_rename itself) | 454 | deadlock in the cases (beginning of sys_rename itself) |
441 | in which we already have the sb rename sem */ | 455 | in which we already have the sb rename sem */ |