xdr-updates-20020731
authorJeffrey Hutzelman <jhutz@cmu.edu>
Thu, 1 Aug 2002 00:13:09 +0000 (00:13 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 1 Aug 2002 00:13:09 +0000 (00:13 +0000)
update xdr so internal variables match what's being passed in

src/rx/xdr.c
src/rx/xdr_array.c
src/rx/xdr_arrayn.c

index 8ca8a4a..c1d07c0 100644 (file)
@@ -558,6 +558,8 @@ xdr_string(xdrs, cpp, maxsize)
        u_int size;
        u_int nodesize;
 
+        if (maxsize > ((~0) >> 1) - 1) maxsize = ((~0) >> 1) - 1;
+
        /*
         * first deal with the length since xdr strings are counted-strings
         */
index ea5de24..d495610 100644 (file)
@@ -84,7 +84,10 @@ xdr_array(xdrs, addrp, sizep, maxsize, elsize, elproc)
        register caddr_t target = *addrp;
        register u_int c;  /* the actual element count */
        register bool_t stat = TRUE;
-       register int nodesize;
+       register u_int nodesize;
+
+        i = ((~0) >> 1) / elsize;
+        if (maxsize > i) maxsize = i;
 
        /* like strings, arrays are really counted arrays */
        if (! xdr_u_int(xdrs, sizep)) {
index e89322a..70cb23f 100644 (file)
@@ -89,7 +89,10 @@ bool_t xdr_arrayN(xdrs, addrp, sizep, maxsize, elsize, elproc)
        register caddr_t target = *addrp;
        register u_int c;  /* the actual element count */
        register bool_t stat = TRUE;
-       register int nodesize;
+       register u_int nodesize;
+
+        i = ((~0) >> 1) / elsize;
+        if (maxsize > i) maxsize = i;
 
        /* like strings, arrays are really counted arrays */
        if (! xdr_u_int(xdrs, sizep)) {