aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/rpcb_clnt.c
diff options
context:
space:
mode:
authorWeston Andros Adamson <dros@netapp.com>2012-10-23 10:43:44 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2012-11-04 14:43:42 -0500
commit332e008a44d1ab6ca85b2214578f2f89af04a2fc (patch)
tree3a17b1839ba3c7e3fea88150ad5404e814bb2635 /net/sunrpc/rpcb_clnt.c
parentSUNRPC: remove BUG_ON from bc_malloc (diff)
downloadlinux-dev-332e008a44d1ab6ca85b2214578f2f89af04a2fc.tar.xz
linux-dev-332e008a44d1ab6ca85b2214578f2f89af04a2fc.zip
SUNRPC: remove BUG_ON from encode_rpcb_string
Replace BUG_ON() with WARN_ON_ONCE() and truncate the encoded string if len > max. Signed-off-by: Weston Andros Adamson <dros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/rpcb_clnt.c')
-rw-r--r--net/sunrpc/rpcb_clnt.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
index a70acae496e4..411f332de0b3 100644
--- a/net/sunrpc/rpcb_clnt.c
+++ b/net/sunrpc/rpcb_clnt.c
@@ -884,7 +884,10 @@ static void encode_rpcb_string(struct xdr_stream *xdr, const char *string,
u32 len;
len = strlen(string);
- BUG_ON(len > maxstrlen);
+ WARN_ON_ONCE(len > maxstrlen);
+ if (len > maxstrlen)
+ /* truncate and hope for the best */
+ len = maxstrlen;
p = xdr_reserve_space(xdr, 4 + len);
xdr_encode_opaque(p, string, len);
}