summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2022-03-25 18:33:55 +0100
committerPhil Sutter <phil@nwl.cc>2022-03-29 23:33:28 +0200
commit3cffa84fa74f40c57e9ef39ea5747d792d697367 (patch)
tree9a0e1d96bad4e967d87d4cf35368438c3dbfd06b
parent90ba6791824ef761f9f397c05b20a2f102dbe74a (diff)
libnfnetlink: Check getsockname() return code
The function may return -1 (and set errno). Assume it will leave addr_len value unchanged, so checking is necessary to not hide the error. Fixes: 4248314d40187 ("nfnl: fix compilation warning with gcc-4.7") Signed-off-by: Phil Sutter <phil@nwl.cc>
-rw-r--r--src/libnfnetlink.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libnfnetlink.c b/src/libnfnetlink.c
index 1cb6a82..667e5ef 100644
--- a/src/libnfnetlink.c
+++ b/src/libnfnetlink.c
@@ -210,7 +210,8 @@ struct nfnl_handle *nfnl_open(void)
nfnlh->peer.nl_family = AF_NETLINK;
addr_len = sizeof(nfnlh->local);
- getsockname(nfnlh->fd, (struct sockaddr *)&nfnlh->local, &addr_len);
+ if (getsockname(nfnlh->fd, (struct sockaddr *)&nfnlh->local, &addr_len))
+ goto err_close;
if (addr_len != sizeof(nfnlh->local)) {
errno = EINVAL;
goto err_close;
@@ -231,7 +232,8 @@ struct nfnl_handle *nfnl_open(void)
/* use getsockname to get the netlink pid that the kernel assigned us */
addr_len = sizeof(nfnlh->local);
- getsockname(nfnlh->fd, (struct sockaddr *)&nfnlh->local, &addr_len);
+ if (getsockname(nfnlh->fd, (struct sockaddr *)&nfnlh->local, &addr_len))
+ goto err_close;
if (addr_len != sizeof(nfnlh->local)) {
errno = EINVAL;
goto err_close;