Changeset 988 for vendor/current/lib/replace/getifaddrs.c
- Timestamp:
- Nov 24, 2016, 1:14:11 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/lib/replace/getifaddrs.c
r860 r988 23 23 License along with this library; if not, see <http://www.gnu.org/licenses/>. 24 24 */ 25 26 #define SOCKET_WRAPPER_NOT_REPLACE27 25 28 26 #include "replace.h" … … 114 112 if (ioctl(fd, SIOCGIFFLAGS, &ifr[i]) == -1) { 115 113 freeifaddrs(*ifap); 114 close(fd); 116 115 return -1; 117 116 } 118 117 119 118 curif = calloc(1, sizeof(struct ifaddrs)); 119 if (curif == NULL) { 120 freeifaddrs(*ifap); 121 close(fd); 122 return -1; 123 } 120 124 curif->ifa_name = strdup(ifr[i].ifr_name); 125 if (curif->ifa_name == NULL) { 126 free(curif); 127 freeifaddrs(*ifap); 128 close(fd); 129 return -1; 130 } 121 131 curif->ifa_flags = ifr[i].ifr_flags; 122 132 curif->ifa_dstaddr = NULL; … … 127 137 if (ioctl(fd, SIOCGIFADDR, &ifr[i]) != -1) { 128 138 curif->ifa_addr = sockaddr_dup(&ifr[i].ifr_addr); 139 if (curif->ifa_addr == NULL) { 140 free(curif->ifa_name); 141 free(curif); 142 freeifaddrs(*ifap); 143 close(fd); 144 return -1; 145 } 129 146 } 130 147 … … 132 149 if (ioctl(fd, SIOCGIFNETMASK, &ifr[i]) != -1) { 133 150 curif->ifa_netmask = sockaddr_dup(&ifr[i].ifr_addr); 151 if (curif->ifa_netmask == NULL) { 152 if (curif->ifa_addr != NULL) { 153 free(curif->ifa_addr); 154 } 155 free(curif->ifa_name); 156 free(curif); 157 freeifaddrs(*ifap); 158 close(fd); 159 return -1; 160 } 134 161 } 135 162
Note:
See TracChangeset
for help on using the changeset viewer.