From bb46114429495b9921abe419e69688a50f1929ce Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 20 May 1998 12:11:11 +0000 Subject: [PATCH] Add FreeBSD DoS patch. --- sunrpc/svc_tcp.c | 1 + sunrpc/xdr_rec.c | 6 ++++++ 2 files changed, 7 insertions(+) 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; } -- 2.47.2