summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbenno <benno@openbsd.org>2020-12-30 18:52:06 +0000
committerbenno <benno@openbsd.org>2020-12-30 18:52:06 +0000
commit64f4079b6d441d2c1463ea758ac7724ba13018ab (patch)
tree406cbeacd76f2449b4fba722995c4d5be09e2e47
parentgetifaddrs() can return entries where ifa_addr is NULL. Check for this (diff)
downloadwireguard-openbsd-64f4079b6d441d2c1463ea758ac7724ba13018ab.tar.xz
wireguard-openbsd-64f4079b6d441d2c1463ea758ac7724ba13018ab.zip
getifaddrs() can return entries where ifa_addr is NULL. Check for this
before accessing anything in ifa_addr. ok claudio@
-rw-r--r--usr.sbin/npppd/common/net_utils.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/usr.sbin/npppd/common/net_utils.c b/usr.sbin/npppd/common/net_utils.c
index e282f0dd2b5..94ccdfd23f7 100644
--- a/usr.sbin/npppd/common/net_utils.c
+++ b/usr.sbin/npppd/common/net_utils.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: net_utils.c,v 1.5 2015/12/17 08:01:55 tb Exp $ */
+/* $OpenBSD: net_utils.c,v 1.6 2020/12/30 18:52:06 benno Exp $ */
/*-
* Copyright (c) 2009 Internet Initiative Japan Inc.
* All rights reserved.
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $Id: net_utils.c,v 1.5 2015/12/17 08:01:55 tb Exp $ */
+/* $Id: net_utils.c,v 1.6 2020/12/30 18:52:06 benno Exp $ */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@@ -48,9 +48,10 @@ get_ifname_by_sockaddr(struct sockaddr *sa, char *ifname)
ifname0 = NULL;
/* I want other way than linear search */
getifaddrs(&addr0);
- for (addr = addr0; ifname0 == NULL&& addr != NULL;
+ for (addr = addr0; ifname0 == NULL && addr != NULL;
addr = addr->ifa_next) {
- if (addr->ifa_addr->sa_family != sa->sa_family ||
+ if (addr->ifa_addr == NULL ||
+ addr->ifa_addr->sa_family != sa->sa_family ||
addr->ifa_addr->sa_len != sa->sa_len)
continue;
switch (addr->ifa_addr->sa_family) {