]> git.saurik.com Git - apple/libinfo.git/commitdiff
Libinfo-129.1.tar.gz mac-os-x-1021 v129.1
authorApple <opensource@apple.com>
Tue, 6 Aug 2002 19:46:15 +0000 (19:46 +0000)
committerApple <opensource@apple.com>
Tue, 6 Aug 2002 19:46:15 +0000 (19:46 +0000)
rpc.subproj/xdr_array.c

index 7d684748794ba721877fd9ca7a21514470b2d012..95f1d0a21e938f5e682262e3914cb7bb0bef83ef 100644 (file)
@@ -53,7 +53,7 @@
 #if defined(LIBC_SCCS) && !defined(lint)
 /*static char *sccsid = "from: @(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro";*/
 /*static char *sccsid = "from: @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC";*/
-static char *rcsid = "$Id: xdr_array.c,v 1.3 2002/02/19 20:36:26 epeyton Exp $";
+static char *rcsid = "$Id: xdr_array.c,v 1.3.84.1 2002/08/06 19:46:15 bbraun Exp $";
 #endif
 
 /*
@@ -70,6 +70,7 @@ static char *rcsid = "$Id: xdr_array.c,v 1.3 2002/02/19 20:36:26 epeyton Exp $";
 #include <string.h>
 #include <rpc/types.h>
 #include <rpc/xdr.h>
+#include <limits.h>
 
 #define LASTUNSIGNED   ((u_int)0-1)
 
@@ -101,7 +102,8 @@ xdr_array(xdrs, addrp, sizep, maxsize, elsize, elproc)
                return (FALSE);
        }
        c = *sizep;
-       if ((c > maxsize) && (xdrs->x_op != XDR_FREE)) {
+       if ((c > maxsize || UINT_MAX/elsize < c) &&
+                       (xdrs->x_op != XDR_FREE)) {
                return (FALSE);
        }
        nodesize = c * elsize;