From: Ankur Dwivedi Date: Mon, 7 Feb 2022 06:12:46 +0000 (+0530) Subject: common/cnxk: fix NPC key extraction validation X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=8540d7dbfcbe463c2ae988f92339a8486c5c0587;p=dpdk.git common/cnxk: fix NPC key extraction validation The x->len is passed as argument to npc_prep_mcam_ldata(). In the function, the len is used to reference elements of int_info and int_info_mask array. The arrays are of length NPC_MAX_EXTRACT_DATA_LEN. Validating the x->len value so that it is not greater than NPC_MAX_EXTRACT_DATA_LEN. This patch also resolves warning observed with gcc 12 compiler. log: ../drivers/common/cnxk/roc_npc_utils.c:13:26: warning: writing 16 bytes into a region of size 0 [-Wstringop-overflow=] ptr[idx] = data[len - 1 - idx]; ../drivers/common/cnxk/roc_npc_utils.c:163:17: note: at offset 64 into destination object ‘int_info’ of size 64 uint8_t int_info[NPC_MAX_EXTRACT_DATA_LEN]; Bugzilla ID: 854 Fixes: 665b6a7400bf ("common/cnxk: add NPC helper API") Cc: stable@dpdk.org Signed-off-by: Ankur Dwivedi Reviewed-by: Kiran Kumar K --- diff --git a/drivers/common/cnxk/roc_npc_utils.c b/drivers/common/cnxk/roc_npc_utils.c index 26e104c39f..f9768ea3cf 100644 --- a/drivers/common/cnxk/roc_npc_utils.c +++ b/drivers/common/cnxk/roc_npc_utils.c @@ -166,6 +166,9 @@ npc_update_extraction_data(struct npc_parse_state *pst, int len = 0; x = xinfo; + if (x->len > NPC_MAX_EXTRACT_DATA_LEN) + return NPC_ERR_INVALID_SIZE; + len = x->len; hdr_off = x->hdr_off;