summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2016-11-10 18:35:21 +0000
committerRoy Marples <roy@marples.name>2016-11-10 18:35:21 +0000
commit9acf8f0a53934cd98a2645bce6de531d34a0aca9 (patch)
treef668a646ba1a989ded4ef2d941353194497cfac7
parent1f7c845e537ad295450b2d6da707fe71fe443670 (diff)
downloaddhcpcd-9acf8f0a53934cd98a2645bce6de531d34a0aca9.tar.xz
Fix sa_fromprefix for real on BSD.
-rw-r--r--sa.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sa.c b/sa.c
index f8fabc76..26d8e3e6 100644
--- a/sa.c
+++ b/sa.c
@@ -264,6 +264,7 @@ sa_toprefix(const struct sockaddr *sa)
union sa_ss ss;
sa_inprefix = true;
+ memset(&ss, 0, sizeof(ss));
ss.sa.sa_family = sa->sa_family;
sa_fromprefix(&ss.sa, prefix);
assert(sa_cmp(sa, &ss.sa) == 0);
@@ -285,7 +286,7 @@ sa_fromprefix(struct sockaddr *sa, int prefix)
case AF_INET:
max_prefix = 32;
#ifdef HAVE_SA_LEN
- sa->sa_len = sizeof(struct in_addr);
+ sa->sa_len = sizeof(struct sockaddr_in);
#endif
break;
#endif
@@ -293,7 +294,7 @@ sa_fromprefix(struct sockaddr *sa, int prefix)
case AF_INET6:
max_prefix = 128;
#ifdef HAVE_SA_LEN
- sa->sa_len = sizeof(struct in6_addr);
+ sa->sa_len = sizeof(struct sockaddr_in6);
#endif
break;
#endif