]> git.ipfire.org Git - thirdparty/wireguard-tools.git/commitdiff
wg: chill modern gcc out
authorJason A. Donenfeld <Jason@zx2c4.com>
Sat, 5 Nov 2016 20:35:33 +0000 (21:35 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Sat, 5 Nov 2016 20:45:12 +0000 (21:45 +0100)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
src/config.c

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