diff options
author | Rob Landley <rob@landley.net> | 2006-02-22 02:10:34 +0000 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2006-02-22 02:10:34 +0000 |
commit | e8f504e86d90b85d85f6005fa8e53a45385d07c8 (patch) | |
tree | 0d8962e3c3bc86d129c9fba431204dfb43c3cc48 /networking/udhcp/socket.c | |
parent | d6e14d8beebb5c9571bded30df6568570f0c2a54 (diff) | |
download | busybox-w32-e8f504e86d90b85d85f6005fa8e53a45385d07c8.tar.gz busybox-w32-e8f504e86d90b85d85f6005fa8e53a45385d07c8.tar.bz2 busybox-w32-e8f504e86d90b85d85f6005fa8e53a45385d07c8.zip |
Bug 751: file handle leaks can add up until available filehandles for the
process are exhausted.
Diffstat (limited to 'networking/udhcp/socket.c')
-rw-r--r-- | networking/udhcp/socket.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/networking/udhcp/socket.c b/networking/udhcp/socket.c index 7b057523a..036885175 100644 --- a/networking/udhcp/socket.c +++ b/networking/udhcp/socket.c | |||
@@ -62,6 +62,7 @@ int read_interface(char *interface, int *ifindex, uint32_t *addr, uint8_t *arp) | |||
62 | DEBUG(LOG_INFO, "%s (our ip) = %s", ifr.ifr_name, inet_ntoa(our_ip->sin_addr)); | 62 | DEBUG(LOG_INFO, "%s (our ip) = %s", ifr.ifr_name, inet_ntoa(our_ip->sin_addr)); |
63 | } else { | 63 | } else { |
64 | LOG(LOG_ERR, "SIOCGIFADDR failed, is the interface up and configured?: %m"); | 64 | LOG(LOG_ERR, "SIOCGIFADDR failed, is the interface up and configured?: %m"); |
65 | close(fd); | ||
65 | return -1; | 66 | return -1; |
66 | } | 67 | } |
67 | } | 68 | } |
@@ -71,6 +72,7 @@ int read_interface(char *interface, int *ifindex, uint32_t *addr, uint8_t *arp) | |||
71 | *ifindex = ifr.ifr_ifindex; | 72 | *ifindex = ifr.ifr_ifindex; |
72 | } else { | 73 | } else { |
73 | LOG(LOG_ERR, "SIOCGIFINDEX failed!: %m"); | 74 | LOG(LOG_ERR, "SIOCGIFINDEX failed!: %m"); |
75 | close(fd); | ||
74 | return -1; | 76 | return -1; |
75 | } | 77 | } |
76 | if (ioctl(fd, SIOCGIFHWADDR, &ifr) == 0) { | 78 | if (ioctl(fd, SIOCGIFHWADDR, &ifr) == 0) { |
@@ -79,6 +81,7 @@ int read_interface(char *interface, int *ifindex, uint32_t *addr, uint8_t *arp) | |||
79 | arp[0], arp[1], arp[2], arp[3], arp[4], arp[5]); | 81 | arp[0], arp[1], arp[2], arp[3], arp[4], arp[5]); |
80 | } else { | 82 | } else { |
81 | LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %m"); | 83 | LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %m"); |
84 | close(fd); | ||
82 | return -1; | 85 | return -1; |
83 | } | 86 | } |
84 | } else { | 87 | } else { |