Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 217084
b: refs/heads/master
c: 9af8c22
h: refs/heads/master
v: v3
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Oct 24, 2010
1 parent bad960c commit 8563fb3
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4f082222fad3c8471abe0c8e8f18c72f335a34c7
refs/heads/master: 9af8c222ca5eae88f000664f693316480bf58fbc
38 changes: 13 additions & 25 deletions trunk/fs/nfs/nfs4xdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -5803,11 +5803,10 @@ __be32 *nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,
p = xdr_decode_hyper(p, &entry->cookie);
entry->len = ntohl(*p++);

p = xdr_inline_decode(xdr, entry->len + 4);
p = xdr_inline_decode(xdr, entry->len);
if (unlikely(!p))
goto out_overflow;
entry->name = (const char *) p;
p += XDR_QUADLEN(entry->len);

/*
* In case the server doesn't return an inode number,
Expand All @@ -5817,30 +5816,19 @@ __be32 *nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,
entry->ino = 1;
entry->fattr->valid = 0;

len = ntohl(*p++); /* bitmap length */
if (len-- > 0) {
p = xdr_inline_decode(xdr, 4);
if (unlikely(!p))
goto out_overflow;
bitmap[0] = ntohl(*p++);
if (len-- > 0) {
p = xdr_inline_decode(xdr, 4);
if (unlikely(!p))
goto out_overflow;
bitmap[1] = ntohl(*p++);
p += len;
}
}
p = xdr_inline_decode(xdr, 4);
if (unlikely(!p))
if (decode_attr_bitmap(xdr, bitmap) < 0)
goto out_overflow;

if (decode_attr_length(xdr, &len, &p) < 0)
goto out_overflow;

if (decode_getfattr_attrs(xdr, bitmap, entry->fattr, entry->fh, server, 1) < 0)
goto out_overflow;
if (entry->fattr->valid & NFS_ATTR_FATTR_FILEID)
entry->ino = entry->fattr->fileid;

if (verify_attr_len(xdr, p, len) < 0)
goto out_overflow;
len = XDR_QUADLEN(ntohl(*p++)); /* attribute buffer length */
if (len > 0) {
if (decode_getfattr_attrs(xdr, bitmap, entry->fattr, entry->fh, server, 1) < 0)
goto out_overflow;
if (entry->fattr->valid & NFS_ATTR_FATTR_FILEID)
entry->ino = entry->fattr->fileid;
}

p = xdr_inline_peek(xdr, 8);
if (p != NULL)
Expand Down

0 comments on commit 8563fb3

Please sign in to comment.