jfs: fix xattr value size overflow in __jfs_setxattr
authorJie Liu <jeff.liu@oracle.com>
Thu, 2 Jan 2014 17:30:42 +0000 (11:30 -0600)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Thu, 2 Jan 2014 17:36:56 +0000 (11:36 -0600)
commit0439e091e3b1fe41a350540c84857a573fde3d72
tree56a720ab70a9ad00c6cb405915bda26f2665d7ba
parent9a0bb2966efbf30a71c128c3af63307d8b5f5fc0
jfs: fix xattr value size overflow in __jfs_setxattr

There is a potential overflow if the specified EA value size is
greater than USHRT_MAX because the size of value is limited by
the on-disk format (i.e, __le16), this issue could be reflected
via the tests below:
 # touch /jfs/testfile
 # setfattr -n user.comment -v `perl -e 'print "A"x65536'` /jfs/testfile
   setfattr: /jfs/testfile: Invalid argument

Syslog:
 ... jfs_xsetattr: xattr_size = 21, new_size = 65557

This patch add pre-checkups of EA value size against USHRT_MAX to
avoid this problem, and return -E2BIG which is consistent with the
VFS setxattr interface.  Moreover, fix the debug code to print the
correct function name.

With this fix:
 setfattr: /jfs/testfile: Argument list too long

Signed-off-by: Jie Liu <jeff.liu@oracle.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
fs/jfs/xattr.c