Procházet zdrojové kódy

Fixed file descriptor leakage in GetIpAndNetmaskFromInterface()

This function internally needs a socket file descriptor for accessing the
network interface. Added the missing close() calls for the failure exits.

Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
Stefan Mätje před 6 roky
rodič
revize
82b1cd034f
1 změnil soubory, kde provedl 2 přidání a 0 odebrání
  1. 2 0
      source/src/ports/POSIX/networkconfig.c

+ 2 - 0
source/src/ports/POSIX/networkconfig.c

@@ -68,12 +68,14 @@ EipStatus ConfigureNetworkInterface(const char *const network_interface) {
     if(ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
       ipaddr = ( (struct sockaddr_in *) &ifr.ifr_addr )->sin_addr.s_addr;
     } else {
+      close(fd);
       return kEipStatusError;
     }
 
     if(ioctl(fd, SIOCGIFNETMASK, &ifr) == 0) {
       netaddr = ( (struct sockaddr_in *) &ifr.ifr_netmask )->sin_addr.s_addr;
     } else {
+      close(fd);
       return kEipStatusError;
     }