]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
mingw: improve ipaddress parsing 3112/head
authorVictor Julien <victor@inliniac.net>
Mon, 11 Dec 2017 17:18:28 +0000 (18:18 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 20 Dec 2017 15:23:31 +0000 (16:23 +0100)
src/win32-misc.c

index 80eb29cd6232272c5901ccb66786a37226104af6..ed52eb5b7a346f417a20cf8e7a0b1b87f72dbc45 100644 (file)
@@ -28,6 +28,7 @@
 #include "suricata-common.h"
 #include "win32-misc.h"
 #include "direct.h"
+#include "util-ip.h"
 
 void setenv(const char *name, const char *value, int overwrite)
 {
@@ -80,6 +81,17 @@ int inet_pton(int af, const char *src, void *dst)
     memset(&hints, 0, sizeof(struct addrinfo));
     hints.ai_family = af;
 
+    /* as getaddrinfo below seems more liberal that inet_pton on Linux,
+     * add this check here that does a guess at the validity of the
+     * input address. */
+    if (af == AF_INET) {
+        if (!IPv4AddressStringIsValid(src))
+            return -1;
+    } else if (af == AF_INET6) {
+        if (!IPv6AddressStringIsValid(src))
+            return -1;
+    }
+
     struct addrinfo* result = NULL;
     if (0 != getaddrinfo(src, NULL, &hints, &result))
         return -1;