Skip to content

Commit

Permalink
NFS4: fix cb_recallany decode error
Browse files Browse the repository at this point in the history
craa_type_mask is bitmap4 per RFC5661. We need to expect a length before
extracting bitmap value.

Cc: Alexandros Batsakis <[email protected]>
Signed-off-by: Peng Tao <[email protected]>
Signed-off-by: Trond Myklebust <[email protected]>
  • Loading branch information
bergwolf authored and Trond Myklebust committed Oct 31, 2011
1 parent 92407e7 commit d743c3c
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions fs/nfs/callback_xdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -488,17 +488,18 @@ static __be32 decode_recallany_args(struct svc_rqst *rqstp,
struct xdr_stream *xdr,
struct cb_recallanyargs *args)
{
__be32 *p;
uint32_t bitmap[2];
__be32 *p, status;

args->craa_addr = svc_addr(rqstp);
p = read_buf(xdr, 4);
if (unlikely(p == NULL))
return htonl(NFS4ERR_BADXDR);
args->craa_objs_to_keep = ntohl(*p++);
p = read_buf(xdr, 4);
if (unlikely(p == NULL))
return htonl(NFS4ERR_BADXDR);
args->craa_type_mask = ntohl(*p);
status = decode_bitmap(xdr, bitmap);
if (unlikely(status))
return status;
args->craa_type_mask = bitmap[0];

return 0;
}
Expand Down

0 comments on commit d743c3c

Please sign in to comment.