<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Fri, Apr 17, 2026 at 12:57 AM Denis Lyulin <<a href="mailto:lyulin.2003@mail.ru">lyulin.2003@mail.ru</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Some strings, primarily for memory zone names, could<br>
exceed their buffer of size 32 (RTE_MEMZONE_NAMESIZE),<br>
because PCI_PRI_FMT format string is not strictly limited in size.<br>
This commit adds bounds checking via using snprintf instead<br>
of sprintf. It also adds use of appropriate format specifiers,<br>
which take width of integers in account.<br>
<br>
Fixes: 02a95625fe9c ("net/bnxt: add flow stats in extended stats")<br>
Cc: <a href="mailto:somnath.kotur@broadcom.com" target="_blank">somnath.kotur@broadcom.com</a><br>
Cc: <a href="mailto:stable@dpdk.org" target="_blank">stable@dpdk.org</a><br>
<br>
Signed-off-by: Denis Lyulin <<a href="mailto:lyulin.2003@mail.ru" target="_blank">lyulin.2003@mail.ru</a>><br></blockquote><div><span style="font-family:Calibri;font-size:11pt">Acked-by: Kishore
Padmanabha <<a href="mailto:kishore.padmanabha@broadcom.com">kishore.padmanabha@broadcom.com</a>></span> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
---<br>
drivers/net/bnxt/bnxt_ethdev.c | 34 +++++++++++++++++++---------------<br>
drivers/net/bnxt/bnxt_hwrm.c | 16 +++++++++-------<br>
2 files changed, 28 insertions(+), 22 deletions(-)<br>
<br>
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c<br>
index b677f9491d..bb02a2579b 100644<br>
--- a/drivers/net/bnxt/bnxt_ethdev.c<br>
+++ b/drivers/net/bnxt/bnxt_ethdev.c<br>
@@ -652,8 +652,9 @@ static int bnxt_init_fc_ctx_mem(struct bnxt *bp)<br>
<br>
max_fc = bp->flow_stat->max_fc;<br>
<br>
- sprintf(type, "bnxt_rx_fc_in_" PCI_PRI_FMT, pdev->addr.domain,<br>
- pdev->addr.bus, pdev->addr.devid, pdev->addr.function);<br>
+ snprintf(type, RTE_MEMZONE_NAMESIZE, "bnxt_rx_fc_in_" PCI_PRI_FMT,<br>
+ pdev->addr.domain, pdev->addr.bus,<br>
+ pdev->addr.devid, pdev->addr.function);<br>
/* 4 bytes for each counter-id */<br>
rc = bnxt_alloc_ctx_mem_buf(bp, type,<br>
max_fc * 4,<br>
@@ -661,8 +662,9 @@ static int bnxt_init_fc_ctx_mem(struct bnxt *bp)<br>
if (rc)<br>
return rc;<br>
<br>
- sprintf(type, "bnxt_rx_fc_out_" PCI_PRI_FMT, pdev->addr.domain,<br>
- pdev->addr.bus, pdev->addr.devid, pdev->addr.function);<br>
+ snprintf(type, RTE_MEMZONE_NAMESIZE, "bnxt_rx_fc_out_" PCI_PRI_FMT,<br>
+ pdev->addr.domain, pdev->addr.bus,<br>
+ pdev->addr.devid, pdev->addr.function);<br>
/* 16 bytes for each counter - 8 bytes pkt_count, 8 bytes byte_count */<br>
rc = bnxt_alloc_ctx_mem_buf(bp, type,<br>
max_fc * 16,<br>
@@ -670,8 +672,9 @@ static int bnxt_init_fc_ctx_mem(struct bnxt *bp)<br>
if (rc)<br>
return rc;<br>
<br>
- sprintf(type, "bnxt_tx_fc_in_" PCI_PRI_FMT, pdev->addr.domain,<br>
- pdev->addr.bus, pdev->addr.devid, pdev->addr.function);<br>
+ snprintf(type, RTE_MEMZONE_NAMESIZE, "bnxt_tx_fc_in_" PCI_PRI_FMT,<br>
+ pdev->addr.domain, pdev->addr.bus,<br>
+ pdev->addr.devid, pdev->addr.function);<br>
/* 4 bytes for each counter-id */<br>
rc = bnxt_alloc_ctx_mem_buf(bp, type,<br>
max_fc * 4,<br>
@@ -679,8 +682,9 @@ static int bnxt_init_fc_ctx_mem(struct bnxt *bp)<br>
if (rc)<br>
return rc;<br>
<br>
- sprintf(type, "bnxt_tx_fc_out_" PCI_PRI_FMT, pdev->addr.domain,<br>
- pdev->addr.bus, pdev->addr.devid, pdev->addr.function);<br>
+ snprintf(type, RTE_MEMZONE_NAMESIZE, "bnxt_tx_fc_out_" PCI_PRI_FMT,<br>
+ pdev->addr.domain, pdev->addr.bus,<br>
+ pdev->addr.devid, pdev->addr.function);<br>
/* 16 bytes for each counter - 8 bytes pkt_count, 8 bytes byte_count */<br>
rc = bnxt_alloc_ctx_mem_buf(bp, type,<br>
max_fc * 16,<br>
@@ -3252,7 +3256,7 @@ bnxt_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size)<br>
uint8_t fw_rsvd = bp->fw_ver & 0xff;<br>
int ret;<br>
<br>
- ret = snprintf(fw_version, fw_size, "%d.%d.%d.%d",<br>
+ ret = snprintf(fw_version, fw_size, "%hhu.%hhu.%hhu.%hhu",<br>
fw_major, fw_minor, fw_updt, fw_rsvd);<br>
if (ret < 0)<br>
return -EINVAL;<br>
@@ -5199,13 +5203,13 @@ static int bnxt_alloc_ctx_mem_blk(struct bnxt *bp,<br>
RTE_ALIGN_MUL_CEIL(mem_size, BNXT_PAGE_SIZE) / BNXT_PAGE_SIZE;<br>
rmem->page_size = BNXT_PAGE_SIZE;<br>
<br>
- snprintf(name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_pg_arr%s_%x_%d",<br>
+ snprintf(name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_pg_arr%s_%hx_%hu",<br>
suffix, idx, bp->eth_dev->data->port_id);<br>
ctx_pg->ctx_pg_arr = rte_zmalloc(name, sizeof(void *) * rmem->nr_pages, 0);<br>
if (ctx_pg->ctx_pg_arr == NULL)<br>
return -ENOMEM;<br>
<br>
- snprintf(name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_dma_arr%s_%x_%d",<br>
+ snprintf(name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_dma_arr%s_%hx_%hu",<br>
suffix, idx, bp->eth_dev->data->port_id);<br>
ctx_pg->ctx_dma_arr = rte_zmalloc(name, sizeof(rte_iova_t *) * rmem->nr_pages, 0);<br>
if (ctx_pg->ctx_dma_arr == NULL)<br>
@@ -5219,7 +5223,7 @@ static int bnxt_alloc_ctx_mem_blk(struct bnxt *bp,<br>
<br>
if (rmem->nr_pages > 1) {<br>
snprintf(name, RTE_MEMZONE_NAMESIZE,<br>
- "bnxt_ctxpgtbl%s_%x_%d",<br>
+ "bnxt_ctxpgtbl%s_%hx_%hu",<br>
suffix, idx, bp->eth_dev->data->port_id);<br>
name[RTE_MEMZONE_NAMESIZE - 1] = 0;<br>
mz = rte_memzone_lookup(name);<br>
@@ -5244,7 +5248,7 @@ static int bnxt_alloc_ctx_mem_blk(struct bnxt *bp,<br>
rmem->pg_tbl_mz = mz;<br>
}<br>
<br>
- snprintf(name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_%s_%x_%d",<br>
+ snprintf(name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_%s_%hx_%hu",<br>
suffix, idx, bp->eth_dev->data->port_id);<br>
mz = rte_memzone_lookup(name);<br>
if (!mz) {<br>
@@ -5393,7 +5397,7 @@ int bnxt_alloc_ctx_pg_tbls(struct bnxt *bp)<br>
for (i = 0; i < w && rc == 0; i++) {<br>
char name[RTE_MEMZONE_NAMESIZE] = {0};<br>
<br>
- sprintf(name, "_%d_%d", i, type);<br>
+ snprintf(name, RTE_MEMZONE_NAMESIZE, "_%d_%hu", i, type);<br>
<br>
if (ctxm->entry_multiple)<br>
entries = bnxt_roundup(ctxm->max_entries,<br>
@@ -6977,7 +6981,7 @@ static int bnxt_rep_port_probe(struct rte_pci_device *pci_dev,<br>
}<br>
<br>
/* representor port net_bdf_port */<br>
- snprintf(name, sizeof(name), "net_%s_representor_%d",<br>
+ snprintf(name, sizeof(name), "net_%s_representor_%hu",<br>
pci_dev-><a href="http://device.name" rel="noreferrer" target="_blank">device.name</a>, eth_da->representor_ports[i]);<br>
<br>
if (rte_eth_dev_allocated(name) != NULL) {<br>
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c<br>
index 0c82935de9..5c51108b65 100644<br>
--- a/drivers/net/bnxt/bnxt_hwrm.c<br>
+++ b/drivers/net/bnxt/bnxt_hwrm.c<br>
@@ -1693,7 +1693,8 @@ int bnxt_hwrm_ver_get(struct bnxt *bp, uint32_t timeout)<br>
(dev_caps_cfg &<br>
HWRM_VER_GET_OUTPUT_DEV_CAPS_CFG_SHORT_CMD_REQUIRED)) ||<br>
bp->hwrm_max_ext_req_len > HWRM_MAX_REQ_LEN) {<br>
- sprintf(type, "bnxt_hwrm_short_" PCI_PRI_FMT,<br>
+ snprintf(type, RTE_MEMZONE_NAMESIZE,<br>
+ "bnxt_hwrm_short_" PCI_PRI_FMT,<br>
bp->pdev->addr.domain, bp->pdev->addr.bus,<br>
bp->pdev->addr.devid, bp->pdev->addr.function);<br>
<br>
@@ -3526,8 +3527,9 @@ int bnxt_alloc_hwrm_resources(struct bnxt *bp)<br>
struct rte_pci_device *pdev = bp->pdev;<br>
char type[RTE_MEMZONE_NAMESIZE];<br>
<br>
- sprintf(type, "bnxt_hwrm_" PCI_PRI_FMT, pdev->addr.domain,<br>
- pdev->addr.bus, pdev->addr.devid, pdev->addr.function);<br>
+ snprintf(type, RTE_MEMZONE_NAMESIZE, "bnxt_hwrm_" PCI_PRI_FMT,<br>
+ pdev->addr.domain, pdev->addr.bus,<br>
+ pdev->addr.devid, pdev->addr.function);<br>
bp->max_resp_len = BNXT_PAGE_SIZE;<br>
bp->hwrm_cmd_resp_addr = rte_malloc(type, bp->max_resp_len, 0);<br>
if (bp->hwrm_cmd_resp_addr == NULL)<br>
@@ -6573,7 +6575,7 @@ static int bnxt_alloc_all_ctx_pg_info(struct bnxt *bp)<br>
if (ctxm->instance_bmap)<br>
n = hweight32(ctxm->instance_bmap);<br>
<br>
- sprintf(name, "bnxt_ctx_pgmem_%d_%d",<br>
+ snprintf(name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_pgmem_%hu_%hu",<br>
bp->eth_dev->data->port_id, type);<br>
ctxm->pg_info = rte_malloc(name, sizeof(*ctxm->pg_info) * n,<br>
RTE_CACHE_LINE_SIZE);<br>
@@ -7535,7 +7537,7 @@ int bnxt_hwrm_cfa_pair_exists(struct bnxt *bp, struct bnxt_representor *rep_bp)<br>
}<br>
<br>
HWRM_PREP(&req, HWRM_CFA_PAIR_INFO, BNXT_USE_CHIMP_MB);<br>
- snprintf(req.pair_name, sizeof(req.pair_name), "%svfr%d",<br>
+ snprintf(req.pair_name, sizeof(req.pair_name), "%svfr%hu",<br>
bp->eth_dev->data->name, rep_bp->vf_id);<br>
req.flags =<br>
rte_cpu_to_le_32(HWRM_CFA_PAIR_INFO_INPUT_FLAGS_LOOKUP_TYPE);<br>
@@ -7564,7 +7566,7 @@ int bnxt_hwrm_cfa_pair_alloc(struct bnxt *bp, struct bnxt_representor *rep_bp)<br>
<br>
HWRM_PREP(&req, HWRM_CFA_PAIR_ALLOC, BNXT_USE_CHIMP_MB);<br>
req.pair_mode = HWRM_CFA_PAIR_FREE_INPUT_PAIR_MODE_REP2FN_TRUFLOW;<br>
- snprintf(req.pair_name, sizeof(req.pair_name), "%svfr%d",<br>
+ snprintf(req.pair_name, sizeof(req.pair_name), "%svfr%hu",<br>
bp->eth_dev->data->name, rep_bp->vf_id);<br>
<br>
req.pf_b_id = rep_bp->parent_pf_idx;<br>
@@ -7609,7 +7611,7 @@ int bnxt_hwrm_cfa_pair_free(struct bnxt *bp, struct bnxt_representor *rep_bp)<br>
}<br>
<br>
HWRM_PREP(&req, HWRM_CFA_PAIR_FREE, BNXT_USE_CHIMP_MB);<br>
- snprintf(req.pair_name, sizeof(req.pair_name), "%svfr%d",<br>
+ snprintf(req.pair_name, sizeof(req.pair_name), "%svfr%hu",<br>
bp->eth_dev->data->name, rep_bp->vf_id);<br>
req.pf_b_id = rep_bp->parent_pf_idx;<br>
req.pair_mode = HWRM_CFA_PAIR_FREE_INPUT_PAIR_MODE_REP2FN_TRUFLOW;<br>
-- <br>
2.34.1<br>
<br>
</blockquote></div></div>