From 0db554d2b21e68dcba62df74078ed370d1895904 Mon Sep 17 00:00:00 2001 From: Chuck Lever Date: Thu, 1 Nov 2007 16:56:47 -0400 Subject: [PATCH] --- yaml --- r: 82407 b: refs/heads/master c: e5cff482c78a35b9f149a06aa777a1bd693864fb h: refs/heads/master i: 82405: 8161b0a9a8c5a6aeec20fcee45707e21bef31f56 82403: 23a1926b08b2f13dac9c5002cdfccd3eeea830bc 82399: 9c1ece6f5891df1422a2cf00f5aaacbae17b6e62 v: v3 --- [refs] | 2 +- trunk/include/linux/sunrpc/xdr.h | 3 ++- trunk/net/sunrpc/xdr.c | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index d608108b0407..1b6a99c549a7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 01b2969a8528b926f5e4d98161ae37053234475c +refs/heads/master: e5cff482c78a35b9f149a06aa777a1bd693864fb diff --git a/trunk/include/linux/sunrpc/xdr.h b/trunk/include/linux/sunrpc/xdr.h index 0751c9464d0f..e4057d729f03 100644 --- a/trunk/include/linux/sunrpc/xdr.h +++ b/trunk/include/linux/sunrpc/xdr.h @@ -112,7 +112,8 @@ struct xdr_buf { __be32 *xdr_encode_opaque_fixed(__be32 *p, const void *ptr, unsigned int len); __be32 *xdr_encode_opaque(__be32 *p, const void *ptr, unsigned int len); __be32 *xdr_encode_string(__be32 *p, const char *s); -__be32 *xdr_decode_string_inplace(__be32 *p, char **sp, int *lenp, int maxlen); +__be32 *xdr_decode_string_inplace(__be32 *p, char **sp, unsigned int *lenp, + unsigned int maxlen); __be32 *xdr_encode_netobj(__be32 *p, const struct xdr_netobj *); __be32 *xdr_decode_netobj(__be32 *p, struct xdr_netobj *); diff --git a/trunk/net/sunrpc/xdr.c b/trunk/net/sunrpc/xdr.c index 54264062ea69..995c3fdc16c2 100644 --- a/trunk/net/sunrpc/xdr.c +++ b/trunk/net/sunrpc/xdr.c @@ -96,11 +96,13 @@ xdr_encode_string(__be32 *p, const char *string) EXPORT_SYMBOL(xdr_encode_string); __be32 * -xdr_decode_string_inplace(__be32 *p, char **sp, int *lenp, int maxlen) +xdr_decode_string_inplace(__be32 *p, char **sp, + unsigned int *lenp, unsigned int maxlen) { - unsigned int len; + u32 len; - if ((len = ntohl(*p++)) > maxlen) + len = ntohl(*p++); + if (len > maxlen) return NULL; *lenp = len; *sp = (char *) p;