l2: fix null deref in l2_to_bvi() 04/28804/2
authorMatthew Smith <mgsmith@netgate.com>
Thu, 10 Sep 2020 15:09:01 +0000 (10:09 -0500)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Tue, 15 Sep 2020 08:38:11 +0000 (08:38 +0000)
Type: fix

Static analysis identified a possible null pointer dereference. It
was introduced by a recent patch which expanded the DMAC comparison
on inbound packets on a BVI interface to include any secondary MAC
addresses which were added to an interface.

Check if the pointer is null before dereferencing.

Change-Id: Ic2afe2b062eda32977e05bf3f98d82c1fe64620c
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
(cherry picked from commit 78681def21b931309a779dfc6a5cbc6ff8b1f814)

src/vnet/l2/l2_bvi.h

index 300ea81..697e25b 100644 (file)
@@ -72,7 +72,7 @@ l2_to_bvi (vlib_main_t * vlib_main,
       ethernet_interface_t *ei = ethernet_get_interface (em, hi->hw_if_index);
       u32 rv;
 
-      if (PREDICT_FALSE (vec_len (ei->secondary_addrs) > 0))
+      if (PREDICT_FALSE (ei && (vec_len (ei->secondary_addrs) > 0)))
        rv = l2_to_bvi_dmac_check (hi, e0->dst_address, ei,
                                   1 /* have_sec_dmac */ );
       else