Explorar o código

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 %!s(int64=6) %!d(string=hai) anos
pai
achega
82b1cd034f
Modificáronse 1 ficheiros con 2 adicións e 0 borrados
  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) {
     if(ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
       ipaddr = ( (struct sockaddr_in *) &ifr.ifr_addr )->sin_addr.s_addr;
       ipaddr = ( (struct sockaddr_in *) &ifr.ifr_addr )->sin_addr.s_addr;
     } else {
     } else {
+      close(fd);
       return kEipStatusError;
       return kEipStatusError;
     }
     }
 
 
     if(ioctl(fd, SIOCGIFNETMASK, &ifr) == 0) {
     if(ioctl(fd, SIOCGIFNETMASK, &ifr) == 0) {
       netaddr = ( (struct sockaddr_in *) &ifr.ifr_netmask )->sin_addr.s_addr;
       netaddr = ( (struct sockaddr_in *) &ifr.ifr_netmask )->sin_addr.s_addr;
     } else {
     } else {
+      close(fd);
       return kEipStatusError;
       return kEipStatusError;
     }
     }