diff options
Diffstat (limited to 'lib/stream.c')
| -rw-r--r-- | lib/stream.c | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/stream.c b/lib/stream.c index b226a25e..ee2920e6 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. */  | 
