From: Joel Becker Date: Thu, 30 Sep 2010 00:33:05 +0000 (-0700) Subject: ocfs2: Don't walk off the end of fast symlinks. X-Git-Tag: v3.0~3233^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1fc8a117865b54590acd773a55fbac9221b018f0;p=platform%2Fkernel%2Flinux-amlogic.git ocfs2: Don't walk off the end of fast symlinks. ocfs2 fast symlinks are NUL terminated strings stored inline in the inode data area. However, disk corruption or a local attacker could, in theory, remove that NUL. Because we're using strlen() (my fault, introduced in a731d1 when removing vfs_follow_link()), we could walk off the end of that string. Signed-off-by: Joel Becker Cc: stable@kernel.org --- diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c index 32499d21..9975457 100644 --- a/fs/ocfs2/symlink.c +++ b/fs/ocfs2/symlink.c @@ -128,7 +128,7 @@ static void *ocfs2_fast_follow_link(struct dentry *dentry, } /* Fast symlinks can't be large */ - len = strlen(target); + len = strnlen(target, ocfs2_fast_symlink_chars(inode->i_sb)); link = kzalloc(len + 1, GFP_NOFS); if (!link) { status = -ENOMEM;