i40e: fix overflow
authorHelin Zhang <helin.zhang@intel.com>
Fri, 11 Mar 2016 16:50:58 +0000 (00:50 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Fri, 11 Mar 2016 21:21:06 +0000 (22:21 +0100)
The array 'ptype_table' was defined in depth of 'UINT8_MAX' which
is 255, while the querying index could be from 0 to 255. The issue
can be fixed with expanding the array to one more element.

Fixes: 9571ea028489 ("i40e: replace some offload flags with unified packet type")

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
drivers/net/i40e/i40e_rxtx.c

index 8931b8e..c10eeff 100644 (file)
@@ -192,7 +192,7 @@ i40e_get_iee15888_flags(struct rte_mbuf *mb, uint64_t qword)
 static inline uint32_t
 i40e_rxd_pkt_type_mapping(uint8_t ptype)
 {
-       static const uint32_t ptype_table[UINT8_MAX] __rte_cache_aligned = {
+       static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
                /* L2 types */
                /* [0] reserved */
                [1] = RTE_PTYPE_L2_ETHER,
@@ -718,7 +718,7 @@ i40e_rxd_pkt_type_mapping(uint8_t ptype)
                /* All others reserved */
        };
 
-       return ptype_table[ptype];
+       return type_table[ptype];
 }
 
 #define I40E_RX_DESC_EXT_STATUS_FLEXBH_MASK   0x03