]> www.infradead.org Git - users/jedix/linux-maple.git/commit
fuse: verify all ioctl retry iov elements
authorZach Brown <zab@redhat.com>
Tue, 24 Jul 2012 19:10:11 +0000 (12:10 -0700)
committerMaxim Uvarov <maxim.uvarov@oracle.com>
Mon, 8 Oct 2012 10:01:01 +0000 (03:01 -0700)
commita9af99ec85d1f703cdc2c9c591e933add9b5a588
tree0c167697028b25e0436ef6ec4cb22c449207b3ab
parentecb5c342eaacfb3472e0c6b64f1c3415962f15ac
fuse: verify all ioctl retry iov elements

commit fb6ccff667712c46b4501b920ea73a326e49626a upstream.

Commit 7572777eef78ebdee1ecb7c258c0ef94d35bad16 attempted to verify that
the total iovec from the client doesn't overflow iov_length() but it
only checked the first element.  The iovec could still overflow by
starting with a small element.  The obvious fix is to check all the
elements.

The overflow case doesn't look dangerous to the kernel as the copy is
limited by the length after the overflow.  This fix restores the
intention of returning an error instead of successfully copying less
than the iovec represented.

I found this by code inspection.  I built it but don't have a test case.
I'm cc:ing stable because the initial commit did as well.

Signed-off-by: Zach Brown <zab@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/fuse/file.c