Merge "libnetutils: Check socket() return value"
am: e4b332c7e4
* commit 'e4b332c7e4ce19e1e2e6d8fe001d8c9e1709f280':
libnetutils: Check socket() return value
This commit is contained in:
commit
be6d330c18
1 changed files with 10 additions and 3 deletions
|
|
@ -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.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue