> -----Original Message----- > From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Chas Williams > Sent: Monday, September 28, 2020 11:32 PM > To: dev@dpdk.org > Cc: olivier.m...@6wind.com; Chas Williams <3ch...@gmail.com> > Subject: [dpdk-dev] [PATCH] net: check that seg is valid before dereference > > If the overall pkt_len and segment lengths are out of agreement, it is > possible > for the seg to be NULL after the loop. Add assert to check this condition in > debug builds. > > Fixes: c442fed81bb9 ("net: add function to calculate checksum in mbuf") > > Signed-off-by: Chas Williams <3ch...@gmail.com> > --- > lib/librte_net/rte_ip.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h index > fcd1eb342..6b3e4cdda 100644 > --- a/lib/librte_net/rte_ip.h > +++ b/lib/librte_net/rte_ip.h > @@ -225,6 +225,7 @@ rte_raw_cksum_mbuf(const struct rte_mbuf *m, > uint32_t off, uint32_t len, > break; > off -= seglen; > } > + RTE_ASSERT(seg != NULL);
Is it better to return an error code? > seglen -= off; > buf = rte_pktmbuf_mtod_offset(seg, const char *, off); > if (seglen >= len) { > -- > 2.26.2