From 09e967c2d732783b2579e4e120cd9b608404cb00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwenol=C3=A9=20Beauchesne?= Date: Wed, 4 Jun 2003 18:31:57 +0000 Subject: Merge from R9_0-AMD64, most notably: - AMD64 support to insmod-busybox, minilibc, et al. - Sync with insmod-modutils 2.4.19 something but everyone should use dietlibc nowadays - Factor out compilation and prefix with $(DIET) for dietlibc builds - 64-bit & varargs fixes --- mdk-stage1/dietlibc/librpc/xdr_array.c | 38 +++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) (limited to 'mdk-stage1/dietlibc/librpc/xdr_array.c') diff --git a/mdk-stage1/dietlibc/librpc/xdr_array.c b/mdk-stage1/dietlibc/librpc/xdr_array.c index f8ae12b19..f0c9bbbb3 100644 --- a/mdk-stage1/dietlibc/librpc/xdr_array.c +++ b/mdk-stage1/dietlibc/librpc/xdr_array.c @@ -48,7 +48,7 @@ static char sccsid[] = #include #include -#define LASTUNSIGNED ((u_int)0-1) +#define LASTUNSIGNED ((unsigned int)0-1) /* @@ -60,17 +60,17 @@ static char sccsid[] = */ bool_t xdr_array(xdrs, addrp, sizep, maxsize, elsize, elproc) register XDR *xdrs; -caddr_t *addrp; /* array pointer */ -u_int *sizep; /* number of elements */ -u_int maxsize; /* max numberof elements */ -u_int elsize; /* size in bytes of each element */ +char* *addrp; /* array pointer */ +unsigned int *sizep; /* number of elements */ +unsigned int maxsize; /* max numberof elements */ +unsigned int elsize; /* size in bytes of each element */ xdrproc_t elproc; /* xdr routine to handle each element */ { - register u_int i; - register caddr_t target = *addrp; - register u_int c; /* the actual element count */ + register unsigned int i; + register char* target = *addrp; + register unsigned int c; /* the actual element count */ register bool_t stat = TRUE; - register u_int nodesize; + register unsigned int nodesize; /* like strings, arrays are really counted arrays */ if (!xdr_u_int(xdrs, sizep)) { @@ -80,7 +80,17 @@ xdrproc_t elproc; /* xdr routine to handle each element */ if ((c > maxsize) && (xdrs->x_op != XDR_FREE)) { return (FALSE); } - nodesize = c * elsize; + /* duh, look for integer overflow (fefe) */ + { + unsigned int i; + nodesize = 0; + for (i=c; i; --i) { + unsigned int tmp=nodesize+elsize; + if (tmp