NFSv4: Fix buffer overflow checking in __nfs4_get_acl_uncached
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 26 Aug 2012 18:44:43 +0000 (11:44 -0700)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 6 Sep 2012 15:11:53 +0000 (11:11 -0400)
commit1f1ea6c2d9d8c0be9ec56454b05315273b5de8ce
tree4718cdc2e494f18ab13c2c8f09930953b77c31ff
parent21f498c2f73bd6150d82931f09965826dca0b5f2
NFSv4: Fix buffer overflow checking in __nfs4_get_acl_uncached

Pass the checks made by decode_getacl back to __nfs4_get_acl_uncached
so that it knows if the acl has been truncated.

The current overflow checking is broken, resulting in Oopses on
user-triggered nfs4_getfacl calls, and is opaque to the point
where several attempts at fixing it have failed.
This patch tries to clean up the code in addition to fixing the
Oopses by ensuring that the overflow checks are performed in
a single place (decode_getacl). If the overflow check failed,
we will still be able to report the acl length, but at least
we will no longer attempt to cache the acl or copy the
truncated contents to user space.

Reported-by: Sachin Prabhu <sprabhu@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Tested-by: Sachin Prabhu <sprabhu@redhat.com>
fs/nfs/nfs4proc.c
fs/nfs/nfs4xdr.c
include/linux/nfs_xdr.h