devices: fix coverity warning/don't leak fd 50/34250/2
authorKlement Sekera <ksekera@cisco.com>
Tue, 26 Oct 2021 14:19:45 +0000 (16:19 +0200)
committerDamjan Marion <dmarion@me.com>
Wed, 27 Oct 2021 20:19:39 +0000 (20:19 +0000)
Move socket creation past code which returns from function to avoid
leaking the socket in case of an early error return.

Type: fix
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: I9e18bd32022441c17ca920d1c2458b058b76c3c0

src/vnet/devices/af_packet/device.c

index 8e4bc2b..c8e59c3 100644 (file)
@@ -336,7 +336,7 @@ static clib_error_t *af_packet_set_mac_address_function
   af_packet_main_t *apm = &af_packet_main;
   af_packet_if_t *apif =
     pool_elt_at_index (apm->interfaces, hi->dev_instance);
-  int rv, fd = socket (AF_UNIX, SOCK_DGRAM, 0);
+  int rv, fd;
   struct ifreq ifr;
 
   if (apif->mode == AF_PACKET_IF_MODE_IP)
@@ -347,6 +347,7 @@ static clib_error_t *af_packet_set_mac_address_function
                                " MAC update failed, interface is in IP mode");
     }
 
+  fd = socket (AF_UNIX, SOCK_DGRAM, 0);
   if (0 > fd)
     {
       vlib_log_warn (apm->log_class, "af_packet_%s could not open socket",