nfsd4: reject "negative" acl lengths
authorJ. Bruce Fields <bfields@redhat.com>
Tue, 26 Mar 2013 18:11:13 +0000 (14:11 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 26 Mar 2013 20:18:27 +0000 (16:18 -0400)
Since we only enforce an upper bound, not a lower bound, a "negative"
length can get through here.

The symptom seen was a warning when we attempt to a kmalloc with an
excessive size.

Reported-by: Toralf Förster <toralf.foerster@gmx.de>
Cc: stable@kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4xdr.c

index 0116886..a272007 100644 (file)
@@ -264,7 +264,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
                iattr->ia_valid |= ATTR_SIZE;
        }
        if (bmval[0] & FATTR4_WORD0_ACL) {
-               int nace;
+               u32 nace;
                struct nfs4_ace *ace;
 
                READ_BUF(4); len += 4;