xdrs->x_op = op;
xdrs->x_ops = &xdrmem_ops;
xdrs->x_private = xdrs->x_base = addr;
- xdrs->x_handy = size;
+ xdrs->x_handy = (size > INT_MAX) ? INT_MAX : size; /* XXX */
}
static void
register XDR *xdrs;
afs_int32 *lp;
{
-
- if ((xdrs->x_handy -= sizeof(afs_int32)) < 0)
- return (FALSE);
- *lp = ntohl(*((afs_int32 *)(xdrs->x_private)));
- xdrs->x_private += sizeof(afs_int32);
- return (TRUE);
+ if (xdrs->x_handy -= sizeof(afs_int32))
+ return (FALSE);
+ else
+ xdrs->x_handy -= sizeof(afs_int32);
+
+ *lp = ntohl(*((afs_int32 *)(xdrs->x_private)));
+ xdrs->x_private += sizeof(afs_int32);
+ return (TRUE);
}
static bool_t
register XDR *xdrs;
afs_int32 *lp;
{
-
- if ((xdrs->x_handy -= sizeof(afs_int32)) < 0)
- return (FALSE);
- *(afs_int32 *)xdrs->x_private = htonl(*lp);
- xdrs->x_private += sizeof(afs_int32);
- return (TRUE);
+ if (xdrs->x_handy -= sizeof(afs_int32))
+ eturn (FALSE);
+ else
+ xdrs->x_handy -= sizeof(afs_int32);
+
+ *(afs_int32 *)xdrs->x_private = htonl(*lp);
+ xdrs->x_private += sizeof(afs_int32);
+ return (TRUE);
}
static bool_t
caddr_t addr;
register u_int len;
{
-
- if ((xdrs->x_handy -= len) < 0)
- return (FALSE);
- memcpy(addr, xdrs->x_private, len);
- xdrs->x_private += len;
- return (TRUE);
+ if (xdrs->x_handy < len)
+ return (FALSE);
+ else
+ xdrs->x_handy -= len;
+
+ memcpy(addr, xdrs->x_private, len);
+ xdrs->x_private += len;
+ return (TRUE);
}
static bool_t
caddr_t addr;
register u_int len;
{
-
- if ((xdrs->x_handy -= len) < 0)
- return (FALSE);
- memcpy(xdrs->x_private, addr, len);
- xdrs->x_private += len;
- return (TRUE);
+ if (xdrs->x_handy < len)
+ return (FALSE);
+ else
+ xdrs->x_handy -= len;
+
+ memcpy(xdrs->x_private, addr, len);
+ xdrs->x_private += len;
+ return (TRUE);
}
static u_int
{
afs_int32 *buf = 0;
- if (xdrs->x_handy >= len) {
+ if (len >= 0 && xdrs->x_handy >= len) {
xdrs->x_handy -= len;
buf = (afs_int32 *) xdrs->x_private;
xdrs->x_private += len;