Carlos Maiolino b52a360b2a xfs: Fix possible memory corruption in xfs_readlink
Fixes a possible memory corruption when the link is larger than
MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the
S_ISLNK assert, since the inode mode is checked previously in
xfs_readlink_by_handle() and via VFS.

Updated to address concerns raised by Ben Hutchings about the loose
attention paid to 32- vs 64-bit values, and the lack of handling a
potentially negative pathlen value:
 - Changed type of "pathlen" to be xfs_fsize_t, to match that of
   ip->i_d.di_size
 - Added checking for a negative pathlen to the too-long pathlen
   test, and generalized the message that gets reported in that case
   to reflect the change
As a result, if a negative pathlen were encountered, this function
would return EFSCORRUPTED (and would fail an assertion for a debug
build)--just as would a too-long pathlen.

Signed-off-by: Alex Elder <aelder@sgi.com>
Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
2011-11-08 10:48:23 -06:00
..
2011-08-12 16:21:35 -05:00
2011-09-15 15:08:18 +02:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-07-25 15:03:13 -05:00
2011-10-11 21:15:01 -05:00
2011-10-11 21:15:07 -05:00
2011-07-25 15:03:13 -05:00
2011-10-11 21:15:11 -05:00
2011-07-25 15:03:13 -05:00
2011-07-13 13:43:48 +02:00
2011-07-13 13:43:48 +02:00
2011-07-13 13:43:48 +02:00
2011-07-13 13:43:48 +02:00
2011-07-13 13:43:48 +02:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-03-07 10:09:35 +11:00
2011-08-12 16:21:35 -05:00
2011-10-11 21:15:09 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-10-11 21:15:01 -05:00
2011-10-11 21:15:01 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2010-12-16 16:05:51 -06:00
2011-11-02 12:53:43 +01:00
2011-08-12 16:21:35 -05:00
2011-05-24 11:17:13 -05:00
2011-04-28 13:18:04 -05:00
2011-10-11 21:15:11 -05:00
2011-10-11 21:15:10 -05:00
2011-04-28 13:18:04 -05:00
2011-08-12 16:21:35 -05:00
2011-10-11 21:15:11 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-10-11 21:15:11 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-10-11 21:15:10 -05:00
2011-10-11 21:15:10 -05:00
2011-07-25 15:03:13 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-10-11 21:15:11 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-10-18 15:12:04 -05:00
2011-08-12 16:21:35 -05:00
2011-04-28 13:18:04 -05:00
2010-10-18 15:08:06 -05:00
2010-10-18 15:08:06 -05:00
2011-08-12 16:21:35 -05:00
2011-07-08 14:34:23 +02:00
2011-08-12 16:21:35 -05:00