linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] NFS: -EIO from decode_bitmap if too many bitmaps
@ 2013-11-15 16:38 Weston Andros Adamson
  2013-11-15 16:57 ` Chuck Lever
  2013-11-15 17:00 ` Trond Myklebust
  0 siblings, 2 replies; 9+ messages in thread
From: Weston Andros Adamson @ 2013-11-15 16:38 UTC (permalink / raw)
  To: Trond.Myklebust; +Cc: linux-nfs, Weston Andros Adamson

decode_bitmap will only decode up to three bitmaps.  If the xdr buffer
has more than three bitmaps, return -EIO here instead of bailing out in
a later xdr decode.

Signed-off-by: Weston Andros Adamson <dros@netapp.com>
---

This is related to my "NFSv4: fix getacl ERANGE for some ACL buffer sizes"
patch - I noticed that even though we'll only ever parse 3 bitmaps, we don't
error out correctly if more are sent.

This condition is probably never hit, but if it ever is, it'd be nice to
have the code error out where the problem actually occurred.

 fs/nfs/nfs4xdr.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 5be2868..3866a69 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -3146,6 +3146,9 @@ static int decode_attr_bitmap(struct xdr_stream *xdr, uint32_t *bitmap)
 		goto out_overflow;
 	bmlen = be32_to_cpup(p);
 
+	if (unlikely(bmlen > 3))
+		goto out_overflow;
+
 	bitmap[0] = bitmap[1] = bitmap[2] = 0;
 	p = xdr_inline_decode(xdr, (bmlen << 2));
 	if (unlikely(!p))
-- 
1.8.3.1 (Apple Git-46)


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-11-15 17:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-15 16:38 [PATCH] NFS: -EIO from decode_bitmap if too many bitmaps Weston Andros Adamson
2013-11-15 16:57 ` Chuck Lever
2013-11-15 17:00 ` Trond Myklebust
2013-11-15 17:05   ` Myklebust, Trond
2013-11-15 17:07     ` Chuck Lever
2013-11-15 17:10       ` Myklebust, Trond
2013-11-15 17:22         ` Weston Andros Adamson
2013-11-15 17:23         ` Chuck Lever
2013-11-15 17:28           ` Myklebust, Trond

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).