mbuf: add sanity checks on segment metadata
authorDavid Marchand <david.marchand@6wind.com>
Mon, 7 Jan 2019 08:57:10 +0000 (09:57 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 15 Jan 2019 01:40:40 +0000 (02:40 +0100)
Add some basic checks on the segments offset and length metadata:
always funny to have a < 0 tailroom cast to uint16_t ;-).

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_mbuf/rte_mbuf.c

index 9790b4f..3bbd3f5 100644 (file)
@@ -200,6 +200,10 @@ rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header)
        pkt_len = m->pkt_len;
 
        do {
+               if (m->data_off > m->buf_len)
+                       rte_panic("data offset too big in mbuf segment\n");
+               if (m->data_off + m->data_len > m->buf_len)
+                       rte_panic("data length too big in mbuf segment\n");
                nb_segs -= 1;
                pkt_len -= m->data_len;
        } while ((m = m->next) != NULL);