summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2016-11-18 16:41:01 +0000
committerRoy Marples <roy@marples.name>2016-11-18 16:41:01 +0000
commit4e1dc4c527dffaf0b8a02b1d0ea24922a3f227d6 (patch)
tree86f95d7cb139897e5509817db6e168f068a4eedd
parentb6353940c5d6d901f03d9313dcd03bc2257cdc51 (diff)
downloaddhcpcd-4e1dc4c527dffaf0b8a02b1d0ea24922a3f227d6.tar.xz
Only compare the address part length as the rest maybe garbage.
-rw-r--r--sa.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sa.c b/sa.c
index 2b3ca60e..11fee823 100644
--- a/sa.c
+++ b/sa.c
@@ -392,6 +392,7 @@ sa_cmp(const struct sockaddr *sa1, const struct sockaddr *sa2)
offset = offsetof(struct sockaddr_in, sin_addr);
#ifdef HAVE_SA_LEN
len -= offset;
+ len = MIN(len, sizeof(struct in_addr));
#else
len = sizeof(struct in_addr);
#endif
@@ -402,6 +403,7 @@ sa_cmp(const struct sockaddr *sa1, const struct sockaddr *sa2)
offset = offsetof(struct sockaddr_in6, sin6_addr);
#ifdef HAVE_SA_LEN
len -= offset;
+ len = MIN(len, sizeof(struct in6_addr));
#else
len = sizeof(struct in6_addr);
#endif