diff options
author | Jere Leppänen <jere.leppanen@nokia.com> | 2024-03-19 15:07:10 +0200 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2024-04-16 16:49:46 +0300 |
commit | 9e43888c35822f12fe3ddc76eedcbd6ae58644dc (patch) | |
tree | 32b19c983b6da9b85a4f8b622c2b9d2fa4f4b352 | |
parent | 8a3b90c47bb68d5647c4b36cc52edef935493d04 (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.c | 3 |
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; |