From: Ulrich Drepper Date: Wed, 20 May 1998 12:11:11 +0000 (+0000) Subject: Add FreeBSD DoS patch. X-Git-Tag: cvs/sparc-980522-merge~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb46114429495b9921abe419e69688a50f1929ce;p=thirdparty%2Fglibc.git Add FreeBSD DoS patch. --- diff --git a/sunrpc/svc_tcp.c b/sunrpc/svc_tcp.c index 278e16fc33a..627841fff8a 100644 --- a/sunrpc/svc_tcp.c +++ b/sunrpc/svc_tcp.c @@ -378,6 +378,7 @@ svctcp_recv(xprt, msg) cd->x_id = msg->rm_xid; return (TRUE); } + cd->strm_stat = XPRT_DIED; /* XXXX */ return (FALSE); } diff --git a/sunrpc/xdr_rec.c b/sunrpc/xdr_rec.c index 6b33208d76a..b7d5388d224 100644 --- a/sunrpc/xdr_rec.c +++ b/sunrpc/xdr_rec.c @@ -548,6 +548,12 @@ set_input_fragment(rstrm) return FALSE; header = ntohl(header); rstrm->last_frag = ((header & LAST_FRAG) == 0) ? FALSE : TRUE; + /* + * Sanity check. Try not to accept wildly incorrect + * record sizes. + */ + if ((header & (~LAST_FRAG)) > rstrm->recvsize) + return(FALSE); rstrm->fbtbc = header & ~LAST_FRAG; return TRUE; }