The pointer arithmetic could overflow with a large min value. Prevent
this by using subtraction instead of addition.
Resolves #3025.
Co-authored-by: ypp <alen0421@gmail.com>
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
/* Move data forward in copy buffer if necessary. */
if (filter->next > filter->buffer &&
- filter->next + min > filter->buffer + filter->buffer_size) {
+ min > filter->buffer_size - (filter->next - filter->buffer)) {
if (filter->avail > 0)
memmove(filter->buffer, filter->next,
filter->avail);