xdr-updates-20020731
[openafs.git] / src / rx / xdr_array.c
index 7fb17de..d495610 100644 (file)
@@ -26,8 +26,8 @@
  * 2550 Garcia Avenue
  * Mountain View, California  94043
  */
-#include <afs/param.h>
 #include <afsconfig.h>
+#include <afs/param.h>
 
 RCSID("$Header$");
 
@@ -46,7 +46,9 @@ RCSID("$Header$");
 #include <sys/param.h>
 #ifdef AFS_LINUX20_ENV
 #include "../h/string.h"
+#if 0
 #define bzero(A,C) memset((A), 0, (C))
+#endif
 #else
 #include <sys/systm.h>
 #endif /* AFS_LINUX20_ENV */
@@ -82,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)) {
@@ -107,7 +112,7 @@ xdr_array(xdrs, addrp, sizep, maxsize, elsize, elproc)
                        if (target == NULL) {
                                return (FALSE);
                        }
-                       bzero(target, (u_int)nodesize);
+                       memset(target, 0, (u_int)nodesize);
                        break;
 
                case XDR_FREE: