summaryrefslogtreecommitdiff
path: root/fs/jffs2/dir.c
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@rpsys.net>2006-04-18 02:05:46 +0100
committerRichard Purdie <richard@tim.rpsys.net>2006-04-18 02:05:46 +0100
commit373d5e71833978fe3d91264d86857762bb92cfe2 (patch)
tree0c56caf25b684d7022ba023bcbdf8f963548d6e1 /fs/jffs2/dir.c
parent6e62e8c2c7b1e3387d73ecb3f7539314b7a9931e (diff)
downloadlinux-exynos-373d5e71833978fe3d91264d86857762bb92cfe2.tar.gz
linux-exynos-373d5e71833978fe3d91264d86857762bb92cfe2.tar.bz2
linux-exynos-373d5e71833978fe3d91264d86857762bb92cfe2.zip
JFFS2: Return an error for long filenames
Return an error if a name is too long for JFFS2 rather than corrupting data. Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Diffstat (limited to 'fs/jffs2/dir.c')
-rw-r--r--fs/jffs2/dir.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c
index 8bc7a5018e40..f92840a3a52f 100644
--- a/fs/jffs2/dir.c
+++ b/fs/jffs2/dir.c
@@ -78,6 +78,9 @@ static struct dentry *jffs2_lookup(struct inode *dir_i, struct dentry *target,
D1(printk(KERN_DEBUG "jffs2_lookup()\n"));
+ if (target->d_name.len > JFFS2_MAX_NAME_LEN)
+ return ERR_PTR(-ENAMETOOLONG);
+
dir_f = JFFS2_INODE_INFO(dir_i);
c = JFFS2_SB_INFO(dir_i->i_sb);