linux-cp: don't create tap for non-eth ifaces 02/38602/4
authorStanislav Zaikin <stanislav.zaikin@46labs.com>
Tue, 4 Apr 2023 08:26:39 +0000 (10:26 +0200)
committerNeale Ranns <neale@graphiant.com>
Tue, 11 Apr 2023 22:40:21 +0000 (22:40 +0000)
Creation of lcp tap for non-ethernet interfaces can potentially lead to a crash, so avoid it.

Type: fix

Change-Id: I76ded8a08ea38a2c31d0215804af023207d4d3e1
Signed-off-by: Stanislav Zaikin <stanislav.zaikin@46labs.com>
src/plugins/linux-cp/lcp_interface.c

index eef06ec..fab048a 100644 (file)
@@ -805,6 +805,14 @@ lcp_itf_pair_create (u32 phy_sw_if_index, u8 *host_if_name,
       return VNET_API_ERROR_INVALID_SW_IF_INDEX;
     }
 
+  if (hw->hw_class_index != ethernet_hw_interface_class.index &&
+      host_if_type == LCP_ITF_HOST_TAP)
+    {
+      LCP_ITF_PAIR_ERR (
+       "pair_create: don't create TAP for non-eth interface; use tun");
+      return VNET_API_ERROR_INVALID_ARGUMENT;
+    }
+
   /*
    * Use interface-specific netns if supplied.
    * Otherwise, use netns if defined, otherwise use the OS default.