From: Avneesh Sachdev Date: Sun, 6 May 2012 00:42:43 +0000 (-0700) Subject: lib: improve sanity checks in stream_set_endp() X-Git-Tag: frr-2.0-rc1~1771 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=4effc29fb1c33a87a8d386de39c20d36a6956645;p=matthieu%2Ffrr.git lib: improve sanity checks in stream_set_endp() * lib/stream.c: (stream_set_endp) Add checks to make sure that the supplied 'endp' is within the 'size' of the stream, and that the current read pointer 'getp' is not beyond the specified 'endp'. --- diff --git a/lib/stream.c b/lib/stream.c index b226a25ea5..ee2920e647 100644 --- a/lib/stream.c +++ b/lib/stream.c @@ -219,13 +219,23 @@ stream_set_endp (struct stream *s, size_t pos) { STREAM_VERIFY_SANE(s); - if (!GETP_VALID (s, pos)) + if (!ENDP_VALID(s, pos)) { STREAM_BOUND_WARN (s, "set endp"); - pos = s->endp; + return; + } + + /* + * Make sure the current read pointer is not beyond the new endp. + */ + if (s->getp > pos) + { + STREAM_BOUND_WARN(s, "set endp"); + return; } s->endp = pos; + STREAM_VERIFY_SANE(s); } /* Forward pointer. */