diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/rpc/ChangeLog | 4 | ||||
-rw-r--r-- | src/lib/rpc/authgss_prot.c | 2 | ||||
-rw-r--r-- | src/lib/rpc/xdr.c | 5 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/lib/rpc/ChangeLog b/src/lib/rpc/ChangeLog index 23d6b8b75c..def5183a36 100644 --- a/src/lib/rpc/ChangeLog +++ b/src/lib/rpc/ChangeLog @@ -1,9 +1,13 @@ 2005-01-14 Tom Yu <tlyu@mit.edu> + * xdr.c (xdr_bytes): Revert previous; the problem was actually in + xdr_rpc_gss_buf. + * authgss_prot.c (xdr_rpc_gss_wrap_data): Use xdr_alloc to avoid size limit issues. Use (unsigned int)-1 instead of MAX_NETOBJ_SZ. (xdr_rpc_gss_unwrap_data): Use (unsigned int)-1 instead of MAX_NETOBJ_SZ. + (xdr_rpc_gss_buf): Set tmplen even if doing XDR_FREE. * xdr.c (xdr_bytes): Don't assign from *sizep if XDR_FREE, since it'll be uninitialized then. Shuts up Purify. diff --git a/src/lib/rpc/authgss_prot.c b/src/lib/rpc/authgss_prot.c index e648f47f72..ab6e7fea07 100644 --- a/src/lib/rpc/authgss_prot.c +++ b/src/lib/rpc/authgss_prot.c @@ -52,7 +52,7 @@ xdr_rpc_gss_buf(XDR *xdrs, gss_buffer_t buf, u_int maxsize) bool_t xdr_stat; u_int tmplen; - if (xdrs->x_op == XDR_ENCODE) { + if (xdrs->x_op != XDR_DECODE) { if (buf->length > UINT_MAX) return (FALSE); else diff --git a/src/lib/rpc/xdr.c b/src/lib/rpc/xdr.c index 7e13fd631c..ec0d27717f 100644 --- a/src/lib/rpc/xdr.c +++ b/src/lib/rpc/xdr.c @@ -409,10 +409,9 @@ xdr_bytes( if (! xdr_u_int(xdrs, sizep)) { return (FALSE); } - if ((xdrs->x_op != XDR_FREE) && (*sizep > maxsize)) { + nodesize = *sizep; + if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) { return (FALSE); - } else { - nodesize = *sizep; } /* |