stats: missing dimension in stat_set_simple_counter 61/30161/2
authorOle Troan <ot@cisco.com>
Wed, 21 Oct 2020 09:55:28 +0000 (11:55 +0200)
committerElias Rudberg <elias.rudberg@bahnhof.net>
Mon, 30 Nov 2020 19:43:08 +0000 (20:43 +0100)
commit007bd2f1fe3a29a8600462af74cf3b1b077fdf30
tree7f34d3dd2a807d537649b268c20aab554156fef0
parente7a1006e867029206535510576fb754398affede
stats: missing dimension in stat_set_simple_counter

A simple counter is a two dimensional array by threads and
counter index. 28017 introduced an error missing the first
dimension.

If a vector is updated at the same time as a client reads,
an invalid pointer my result. This will be caught by the
optimistic locking after copying out the data, but if
following a pointer outside of the stat segment then
the stat client would crash. Add suitable boundary checks
for access to stat memory segment.

Fixes: 7d29e320fb2855a1ddb7a6af09078b8ed636de01
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I94f124ec71d98218c4eda5d124ac5594743d93d6
(cherry picked from commit 65c56c83ce4e58178b5ad90a8f325692c9904381)
Signed-off-by: Elias Rudberg <elias.rudberg@bahnhof.net>
src/vpp-api/client/stat_client.c
src/vpp-api/client/stat_client.h
src/vpp/stats/stat_segment.c