net/eth: Check iovec has enough data earlier
authorPhilippe Mathieu-Daudé <philmd@redhat.com>
Wed, 10 Mar 2021 18:31:21 +0000 (19:31 +0100)
committerJason Wang <jasowang@redhat.com>
Mon, 22 Mar 2021 09:34:31 +0000 (17:34 +0800)
We want to check fields from ip6_ext_hdr_routing structure
and if correct read the full in6_address. Let's directly check
if our iovec contains enough data for everything, else return
early.

Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Miroslav Rezanina <mrezanin@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
net/eth.c

index 087aa71a0239413b6f1b3b6e162f3d59c96fca6a..6db943d4b353d58ea37d72408b1e2737079c8b69 100644 (file)
--- a/net/eth.c
+++ b/net/eth.c
@@ -409,7 +409,7 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
     size_t input_size = iov_size(pkt, pkt_frags);
     size_t bytes_read;
 
-    if (input_size < ext_hdr_offset + sizeof(*ext_hdr)) {
+    if (input_size < ext_hdr_offset + sizeof(*rthdr) + sizeof(*dst_addr)) {
         return false;
     }