Re: [PATCH] nfsd41: nfsd4_decode_compound() does not recognize allops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



That's right.

- ricardo

On Dec 17, 2009, at 7:53 AM, "J. Bruce Fields" <bfields@xxxxxxxxxxxx> wrote:

On Fri, Dec 11, 2009 at 07:10:49PM -0800, Ricardo Labiaga wrote:
The server incorrectly assumes that the operations in the
array start with value 0.  The first operation (OP_ACCESS)
has a value of 3, causing the check in nfsd4_decode_compound
to be off.

Instead of comparing that the operation number is less than
the number of elements in the array, the server should verify
that it is less than the maximum valid operation number
defined by LAST_NFS4_OP.

Thanks. So the effect of this was to return an OP_ILLEGAL in some cases
where we should have been returning a NOTSUPP error?

--b.


Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@xxxxxxxxxx>
---
fs/nfsd/nfs4xdr.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index 0fbd50c..b83a24c 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1442,7 +1442,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp)
       }
       op->opnum = ntohl(*argp->p++);

-        if (op->opnum >= OP_ACCESS && op->opnum < ops->nops)
+        if (op->opnum >= OP_ACCESS && op->opnum <= LAST_NFS4_OP)
           op->status = ops->decoders[op->opnum](argp, &op->u);
       else {
           op->opnum = OP_ILLEGAL;
--
1.5.4.3

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux