aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJere Leppänen <jere.leppanen@nokia.com>2024-03-19 15:07:10 +0200
committerMatias Elo <matias.elo@nokia.com>2024-04-16 16:49:46 +0300
commit9e43888c35822f12fe3ddc76eedcbd6ae58644dc (patch)
tree32b19c983b6da9b85a4f8b622c2b9d2fa4f4b352
parent8a3b90c47bb68d5647c4b36cc52edef935493d04 (diff)
linux-gen: packet: in packet_free_multi_ev(), return immediately if number of events is zero
If packet_free_multi_ev() is called with zero events, the pkt_hdrs[] array ends up being zero size, which is undefined behavior. Fix by returning early if number of events is zero. Fixes GCC undefined sanitizer error: odp_packet.c:702:20: runtime error: variable length array bound evaluates to non-positive value 0 Signed-off-by: Jere Leppänen <jere.leppanen@nokia.com> Reviewed-by: Janne Peltonen <janne.peltonen@nokia.com>
-rw-r--r--platform/linux-generic/odp_packet.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c
index 011d2d8cc..364992761 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -699,6 +699,9 @@ void odp_packet_free(odp_packet_t pkt)
static inline void packet_free_multi_ev(const odp_packet_t pkt[], int num, _odp_ev_id_t id)
{
+ if (odp_unlikely(!num))
+ return;
+
odp_packet_hdr_t *pkt_hdrs[num];
int i;
int num_freed = 0;