From 809eb669c7a353cd06da58ccdf8578053b1233ca Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Thu, 12 Jan 2023 16:07:26 -0500 Subject: vppinfra: fix longstanding corner case bug in serialize_get() serialize_get() -> serialize_write_not_inline(...) was losing track of the current buffer index when it managed to empty the overflow vector but had to turn around and use it again. Test-case added to test_serialize.c. This issue dates from 2010. Type: fix Signed-off-by: Dave Barach Change-Id: I024a03f7a50fd6df543ddbc7c45d85def4f1981d --- src/vppinfra/serialize.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/vppinfra/serialize.c') diff --git a/src/vppinfra/serialize.c b/src/vppinfra/serialize.c index f5c00649627..ceda617f872 100644 --- a/src/vppinfra/serialize.c +++ b/src/vppinfra/serialize.c @@ -741,6 +741,7 @@ serialize_write_not_inline (serialize_main_header_t * m, if (n_left_o > 0 || n_left_b < n_bytes_to_write) { u8 *r; + s->current_buffer_index = cur_bi; vec_add2 (s->overflow_buffer, r, n_bytes_to_write); return r; } -- cgit 1.2.3-korg