patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
34 lines
887 B
Diff
34 lines
887 B
Diff
--- lib/libc/xdr/xdr_array.c:1.8 Fri Aug 27 19:02:55 1999
|
|
+++ lib/libc/xdr/xdr_array.c Wed Jul 31 10:11:59 2002
|
|
@@ -42,6 +42,7 @@
|
|
* arrays. See xdr.h for more info on the interface to xdr.
|
|
*/
|
|
|
|
+#include <limits.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
@@ -73,11 +74,12 @@
|
|
register u_int nodesize;
|
|
|
|
/* like strings, arrays are really counted arrays */
|
|
- if (! xdr_u_int(xdrs, sizep)) {
|
|
+ if (!xdr_u_int(xdrs, sizep)) {
|
|
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;
|
|
@@ -145,7 +147,7 @@
|
|
|
|
elptr = basep;
|
|
for (i = 0; i < nelem; i++) {
|
|
- if (! (*xdr_elem)(xdrs, elptr, LASTUNSIGNED)) {
|
|
+ if (!(*xdr_elem)(xdrs, elptr, LASTUNSIGNED)) {
|
|
return(FALSE);
|
|
}
|
|
elptr += elemsize;
|