summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/rpc/ChangeLog6
-rw-r--r--src/lib/rpc/xdr_alloc.c5
2 files changed, 9 insertions, 2 deletions
diff --git a/src/lib/rpc/ChangeLog b/src/lib/rpc/ChangeLog
index 0626d9d55..2a0f4846d 100644
--- a/src/lib/rpc/ChangeLog
+++ b/src/lib/rpc/ChangeLog
@@ -1,3 +1,9 @@
+2002-10-31 Ken Raeburn <raeburn@mit.edu>
+
+ * xdr_alloc.c (xdralloc_putlong): Coerce value pointed to by
+ argument to 32 bits, rather than reading only 32 bits from the
+ supplied address.
+
2002-09-24 Ken Raeburn <raeburn@mit.edu>
* Makefile.in ($(HDRS)): Depend on includes.
diff --git a/src/lib/rpc/xdr_alloc.c b/src/lib/rpc/xdr_alloc.c
index 236377b92..ee83cdec0 100644
--- a/src/lib/rpc/xdr_alloc.c
+++ b/src/lib/rpc/xdr_alloc.c
@@ -102,8 +102,9 @@ static bool_t xdralloc_putlong(xdrs, lp)
register XDR *xdrs;
long *lp;
{
- int l = htonl((rpc_u_int32) *(int *)lp);
-
+ int l = htonl((rpc_u_int32) *lp); /* XXX need bounds checking */
+
+ /* XXX assumes sizeof(int)==4 */
if (DynInsert((DynObject) xdrs->x_private,
DynSize((DynObject) xdrs->x_private), &l,
sizeof(int)) != DYN_OK)