Re: [ 137/143] xfs: underflow bug in xfs_attrlist_by_handle()

From: Willy Tarreau
Date: Tue May 13 2014 - 07:19:16 EST


Hi Luis,

On Tue, May 13, 2014 at 12:08:12PM +0100, Luis Henriques wrote:
> > diff --git a/fs/xfs/linux-2.6/xfs_ioctl32.c b/fs/xfs/linux-2.6/xfs_ioctl32.c
> > index bad485a..782d03d 100644
> > --- a/fs/xfs/linux-2.6/xfs_ioctl32.c
> > +++ b/fs/xfs/linux-2.6/xfs_ioctl32.c
> > @@ -361,8 +361,8 @@ xfs_compat_attrlist_by_handle(
> > if (copy_from_user(&al_hreq, arg,
> > sizeof(compat_xfs_fsop_attrlist_handlereq_t)))
> > return -XFS_ERROR(EFAULT);
> > - if (al_hreq.buflen > XATTR_LIST_MAX)
> > - return -XFS_ERROR(EINVAL);
>
> Am I missing something or was the above return statement deleted by
> mistake?
>
> > + if (al_hreq.buflen < sizeof(struct attrlist) ||
> > + al_hreq.buflen > XATTR_LIST_MAX)

Ouch! You're absolutely right, thanks a lot for spotting this!

Here's an updated patch. Dann, Moritz, you want to use this one
as well instead!

thanks,
Willy