From 42e2140dd97c0d03c7edc033119e1e1bb59ed5a5 Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Tue, 20 Jul 2021 16:51:39 +0200 Subject: vppinfra: fix clib_random_buffer_get_data caching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using cached bytes: - do not overflow - do not return the same bytes twice Type: fix Change-Id: I2a87b47a79300e56a2201b8fc3cb6cb15b592e28 Signed-off-by: Benoît Ganne --- src/vppinfra/random_buffer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/vppinfra/random_buffer.h') diff --git a/src/vppinfra/random_buffer.h b/src/vppinfra/random_buffer.h index 320394d1862..dded53163fc 100644 --- a/src/vppinfra/random_buffer.h +++ b/src/vppinfra/random_buffer.h @@ -88,7 +88,7 @@ clib_random_buffer_get_data (clib_random_buffer_t * b, uword n_bytes) if (n_bytes <= l) { b->n_cached_bytes = l - n_bytes; - return &b->cached_bytes[l]; + return &b->cached_bytes[l - n_bytes]; } n_words = n_bytes / sizeof (uword); @@ -106,7 +106,7 @@ clib_random_buffer_get_data (clib_random_buffer_t * b, uword n_bytes) { b->cached_word = b->buffer[i]; b->n_cached_bytes = sizeof (uword) - n_bytes; - return b->cached_bytes; + return &b->cached_bytes[sizeof (uword) - n_bytes]; } else return b->buffer + i; -- cgit 1.2.3-korg