From 7a15b2e3e49cce7c8cfd1d0a03ee5cf82676bdcb Mon Sep 17 00:00:00 2001
From: Xavier Simonart <xavier.simonart@intel.com>
Date: Sun, 28 Oct 2018 15:54:28 +0100
Subject: Fix potential crash when shuffling mbufs

Change-Id: I70de6345afc6a696906f006c1b0f44540ae4ecec
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
---
 VNFs/DPPD-PROX/main.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'VNFs')

diff --git a/VNFs/DPPD-PROX/main.c b/VNFs/DPPD-PROX/main.c
index 2e1616af..ec1ecb58 100644
--- a/VNFs/DPPD-PROX/main.c
+++ b/VNFs/DPPD-PROX/main.c
@@ -571,13 +571,14 @@ static void shuffle_mempool(struct rte_mempool* mempool, uint32_t nb_mbuf)
 	struct rte_mbuf** pkts = prox_zmalloc(nb_mbuf * sizeof(*pkts), rte_socket_id());
 	uint64_t got = 0;
 
-	while (rte_mempool_get_bulk(mempool, (void**)(pkts + got), 1) == 0)
+	while ((got < nb_mbuf) && (rte_mempool_get_bulk(mempool, (void**)(pkts + got), 1) == 0))
 		++got;
 
+	nb_mbuf = got;
 	while (got) {
 		int idx;
 		do {
-			idx = rand() % nb_mbuf - 1;
+			idx = rand() % nb_mbuf;
 		} while (pkts[idx] == 0);
 
 		rte_mempool_put_bulk(mempool, (void**)&pkts[idx], 1);
-- 
cgit