The size argument to the PMD can not be larger than the largest
per-mbuf data segment size; otherwise the logic in eth_null_rx()
would generate an invalid mbuf.
Fixes: 4df90194f2a2 ("net/null: prefer unsigned int")
Cc: [email protected]
Signed-off-by: Stephen Hemminger <[email protected]>
---
drivers/net/null/rte_eth_null.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c
index 4b4d996686..aee7754654 100644
--- a/drivers/net/null/rte_eth_null.c
+++ b/drivers/net/null/rte_eth_null.c
@@ -611,14 +611,17 @@ get_packet_size_arg(const char *key __rte_unused,
{
const char *a = value;
unsigned int *packet_size = extra_args;
+ unsigned long sz;
if ((value == NULL) || (extra_args == NULL))
return -EINVAL;
- *packet_size = (unsigned int)strtoul(a, NULL, 0);
- if (*packet_size == UINT_MAX)
- return -1;
+ errno = 0;
+ sz = strtoul(a, NULL, 0);
+ if (sz > UINT16_MAX || errno != 0)
+ return -EINVAL;
+ *packet_size = sz;
return 0;
}
--
2.51.0