2013-04-30 Patsy Franklin * nis/yp_xdr.c: Defined XDRMAXNAME and XDRMAXRECORD. (xdr_domainname): Use XDRMAXNAME as maxsize. (xdr_mapname): Use XDRMAXNAME as maxsize. (xdr_peername): Use XDRMAXNAME as maxsize. (xdr_keydat): Use XDRMAXRECORD as maxsize. (xdr_valdat): Use XDRMAXRECORD as maxsize. diff -Nrup a/nis/yp_xdr.c b/nis/yp_xdr.c --- a/nis/yp_xdr.c 2012-06-30 15:12:34.000000000 -0400 +++ b/nis/yp_xdr.c 2013-04-30 05:36:02.492835503 -0400 @@ -32,6 +32,14 @@ #include #include +/* The specification suggests 1024 as a maximum length of all fields, + but current linux systems usually don't use any limits. So, to stay + as much compatible as possible with recent linux systems we choose + limits large enough to avoid problems. */ + +#define XDRMAXNAME 1024 +#define XDRMAXRECORD 16 * 1024 * 1024 + bool_t xdr_ypstat (XDR *xdrs, ypstat *objp) { @@ -49,21 +57,21 @@ libnsl_hidden_def (xdr_ypxfrstat) bool_t xdr_domainname (XDR *xdrs, domainname *objp) { - return xdr_string (xdrs, objp, ~0); + return xdr_string (xdrs, objp, XDRMAXNAME); } libnsl_hidden_def (xdr_domainname) bool_t xdr_mapname (XDR *xdrs, mapname *objp) { - return xdr_string (xdrs, objp, ~0); + return xdr_string (xdrs, objp, XDRMAXNAME); } libnsl_hidden_def (xdr_mapname) bool_t xdr_peername (XDR *xdrs, peername *objp) { - return xdr_string (xdrs, objp, ~0); + return xdr_string (xdrs, objp, XDRMAXNAME); } libnsl_hidden_def (xdr_peername) @@ -71,7 +79,7 @@ bool_t xdr_keydat (XDR *xdrs, keydat *objp) { return xdr_bytes (xdrs, (char **) &objp->keydat_val, - (u_int *) &objp->keydat_len, ~0); + (u_int *) &objp->keydat_len, XDRMAXRECORD); } libnsl_hidden_def (xdr_keydat) @@ -79,7 +87,7 @@ bool_t xdr_valdat (XDR *xdrs, valdat *objp) { return xdr_bytes (xdrs, (char **) &objp->valdat_val, - (u_int *) &objp->valdat_len, ~0); + (u_int *) &objp->valdat_len, XDRMAXRECORD); } libnsl_hidden_def (xdr_valdat)