list: silent scan-build false positive

With commit c023534e7b ("target: use list for target events")
scan build incorrectly states that list_add() would be called with
the field 'next' of the parameter 'head' (thus 'head->next') set
to NULL. Then, list_add() would call linux_list_add() with the
parameter 'next' set to NULL that will cause a NULL dereference.

While this can really happen with broken code, it's not the case
with the code from the change above.

Add assert() in linux_list_add() to silent scan build on this
false positive and to detect future incorrect use of the list.

Change-Id: Iec7f3d70237312b646ac58f76ecaab2fa25eab41
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8824
Tested-by: jenkins
This commit is contained in:
Antonio Borneo
2025-04-05 17:04:43 +02:00
parent 16c5c1b353
commit cfed1f78db

View File

@@ -35,6 +35,7 @@
/* begin OpenOCD changes */
#include <assert.h>
#include <stddef.h>
struct list_head {
@@ -109,6 +110,9 @@ static inline void
linux_list_add(struct list_head *new, struct list_head *prev,
struct list_head *next)
{
assert(next);
assert(prev);
next->prev = new;
new->next = next;
new->prev = prev;