From e4b6f4b375f292ceb2e8b6c338a746937f058ae5 Mon Sep 17 00:00:00 2001 From: Diogo Sousa Date: Sun, 16 Jun 2013 20:16:58 +0100 Subject: [PATCH] Refined IPv6 address matching in url.c. --- src/common/url.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/common/url.c b/src/common/url.c index b57f9fc3..3d38083c 100644 --- a/src/common/url.c +++ b/src/common/url.c @@ -350,7 +350,9 @@ do_an_re(const char *word,int *start, int *end, int *type) #define DOMAIN "[a-z0-9][-a-z0-9]*(\\.[-a-z0-9]+)*\\." #define TLD "[a-z][-a-z0-9]*[a-z]" #define IPADDR "[0-9]{1,3}(\\.[0-9]{1,3}){3}" -#define IPV6ADDR "([0-9a-f]{0,4}(:[0-9a-f]{0,4})*:){2}[0-9a-f]{0,4}(:[0-9a-f]{0,4})*" +#define IPV6GROUP "([0-9a-f]{0,4})" +#define IPV6ADDR "((" IPV6GROUP "(:" IPV6GROUP "){7})" \ + "|(" IPV6GROUP "(:" IPV6GROUP ")*:(:" IPV6GROUP ")+))" /* with :: compression */ #define HOST "(" DOMAIN TLD "|" IPADDR "|" IPV6ADDR ")" #define OPT_PORT "(:[1-9][0-9]{0,4})?"