Merge "libnetutils: Check socket() return value"

am: e4b332c7e4

* commit 'e4b332c7e4ce19e1e2e6d8fe001d8c9e1709f280':
  libnetutils: Check socket() return value
This commit is contained in:
Elliott Hughes 2016-01-12 04:50:38 +00:00 committed by android-build-merger
commit be6d330c18

View file

@ -253,6 +253,7 @@ int ifc_act_on_address(int action, const char *name, const char *address,
int prefixlen) { int prefixlen) {
int ifindex, s, len, ret; int ifindex, s, len, ret;
struct sockaddr_storage ss; struct sockaddr_storage ss;
int saved_errno;
void *addr; void *addr;
size_t addrlen; size_t addrlen;
struct { struct {
@ -317,15 +318,21 @@ int ifc_act_on_address(int action, const char *name, const char *address,
memcpy(RTA_DATA(rta), addr, addrlen); memcpy(RTA_DATA(rta), addr, addrlen);
s = socket(PF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE); s = socket(PF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE);
if (send(s, &req, req.n.nlmsg_len, 0) < 0) { if (s < 0) {
close(s);
return -errno; return -errno;
} }
if (send(s, &req, req.n.nlmsg_len, 0) < 0) {
saved_errno = errno;
close(s);
return -saved_errno;
}
len = recv(s, buf, sizeof(buf), 0); len = recv(s, buf, sizeof(buf), 0);
saved_errno = errno;
close(s); close(s);
if (len < 0) { if (len < 0) {
return -errno; return -saved_errno;
} }
// Parse the acknowledgement to find the return code. // Parse the acknowledgement to find the return code.