summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoritojun <>2001-08-20 02:27:10 +0000
committeritojun <>2001-08-20 02:27:10 +0000
commit7f230ace8fd819f5d376db88b183f0151a8e6475 (patch)
tree90019ad8958d95035a6c7ba73b8b207c143fd166
parenta4081690eeec13080905e94cd8a17fb257bd54a8 (diff)
downloadopenbsd-7f230ace8fd819f5d376db88b183f0151a8e6475.tar.gz
openbsd-7f230ace8fd819f5d376db88b183f0151a8e6475.tar.bz2
openbsd-7f230ace8fd819f5d376db88b183f0151a8e6475.zip
cope with sa_len < sizeof(struct sockaddr).
From: Patrik Lindergren <patrik@datacom.nu>
-rw-r--r--src/lib/libc/net/getifaddrs.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/lib/libc/net/getifaddrs.c b/src/lib/libc/net/getifaddrs.c
index 5c9c337f71..ca69af8b9e 100644
--- a/src/lib/libc/net/getifaddrs.c
+++ b/src/lib/libc/net/getifaddrs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getifaddrs.c,v 1.5 2001/07/04 19:43:16 deraadt Exp $ */ 1/* $OpenBSD: getifaddrs.c,v 1.6 2001/08/20 02:27:10 itojun Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1995, 1999 4 * Copyright (c) 1995, 1999
@@ -213,7 +213,10 @@ getifaddrs(struct ifaddrs **pif)
213 dcnt += SA_RLEN(sa); 213 dcnt += SA_RLEN(sa);
214 ncnt += sizeof(ifr->ifr_name) + 1; 214 ncnt += sizeof(ifr->ifr_name) + 1;
215 215
216 ifr = (struct ifreq *)(((char *)sa) + SA_LEN(sa)); 216 if (SA_LEN(sa) < sizeof(*sa))
217 ifr = (struct ifreq *)(((char *)sa) + sizeof(*sa));
218 else
219 ifr = (struct ifreq *)(((char *)sa) + SA_LEN(sa));
217 } 220 }
218#endif /* NET_RT_IFLIST */ 221#endif /* NET_RT_IFLIST */
219 222