From 7f44c02f456f7b715044f2537e21c86cc2776fa5 Mon Sep 17 00:00:00 2001 From: mjc <17681860670@163.com> Date: Mon, 6 Jan 2020 14:41:12 +0800 Subject: [PATCH] core/ringbuffer: compensate 'ringbuffer_remove' underflow error When rb->start = rb->size, `ringbuffer_get_one(ringbuffer_t *restrict rb)` will read out of bounds. --- core/ringbuffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ringbuffer.c b/core/ringbuffer.c index b79c7560fc..4e09ecb3e5 100644 --- a/core/ringbuffer.c +++ b/core/ringbuffer.c @@ -121,7 +121,7 @@ unsigned ringbuffer_remove(ringbuffer_t *restrict rb, unsigned n) rb->avail -= n; /* compensate underflow */ - if (rb->start > rb->size) { + if (rb->start >= rb->size) { rb->start -= rb->size; } }