wg: chill modern gcc out

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld 2016-11-05 21:35:33 +01:00
parent ff52c3e3a4
commit 3338bb11e8
1 changed files with 12 additions and 22 deletions

View File

@ -2,6 +2,7 @@
#include <arpa/inet.h> #include <arpa/inet.h>
#include <limits.h>
#include <ctype.h> #include <ctype.h>
#include <netdb.h> #include <netdb.h>
#include <stdio.h> #include <stdio.h>
@ -220,7 +221,7 @@ static inline bool parse_ipmasks(struct inflatable_device *buf, size_t peer_offs
} }
sep = mutable; sep = mutable;
while ((mask = strsep(&sep, ","))) { while ((mask = strsep(&sep, ","))) {
unsigned long cidr; unsigned long cidr = ULONG_MAX;
char *end, *ip = strsep(&mask, "/"); char *end, *ip = strsep(&mask, "/");
if (use_space(buf, sizeof(struct wgipmask)) < 0) { if (use_space(buf, sizeof(struct wgipmask)) < 0) {
perror("use_space"); perror("use_space");
@ -234,27 +235,16 @@ static inline bool parse_ipmasks(struct inflatable_device *buf, size_t peer_offs
free(mutable); free(mutable);
return false; return false;
} }
if (ipmask->family == AF_INET) { if (mask && *mask) {
if (mask) { cidr = strtoul(mask, &end, 10);
cidr = strtoul(mask, &end, 10); if (*end)
if (*end) cidr = ULONG_MAX;
mask = NULL; }
if (cidr > 32) if (ipmask->family == AF_INET)
mask = NULL; cidr = cidr > 32 ? 32 : cidr;
} else if (ipmask->family == AF_INET6)
if (!mask) cidr = cidr > 128 ? 128 : cidr;
cidr = 32; else
} else if (ipmask->family == AF_INET6) {
if (mask) {
cidr = strtoul(mask, &end, 10);
if (*end)
mask = NULL;
if (cidr > 128)
mask = NULL;
}
if (!mask)
cidr = 128;
} else
continue; continue;
ipmask->cidr = cidr; ipmask->cidr = cidr;
++peer->num_ipmasks; ++peer->num_ipmasks;