From 0e9b4de751122accb53d8cdbad38de364b6322db Mon Sep 17 00:00:00 2001 From: hniksic Date: Tue, 9 Sep 2003 06:06:58 -0700 Subject: [PATCH] [svn] Return an error from url_parse if the IP address is IPv6 and we don't handle IPv6. --- src/ChangeLog | 5 +++++ src/url.c | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 06ee80e4..15affbca 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2003-09-09 Hrvoje Niksic + + * url.c (url_parse): Return an error if the URL contains a [...] + IPv6 numeric address and we don't support IPv6. + 2003-09-05 Hrvoje Niksic * url.c (is_valid_ipv6_address): Modified to not require diff --git a/src/url.c b/src/url.c index b5cb388b..5435f9bc 100644 --- a/src/url.c +++ b/src/url.c @@ -649,7 +649,9 @@ static char *parse_errors[] = { "Invalid user name", #define PE_UNTERMINATED_IPV6_ADDRESS 5 "Unterminated IPv6 numeric address", -#define PE_INVALID_IPV6_ADDRESS 6 +#define PE_IPV6_NOT_SUPPORTED 6 + "IPv6 addresses not supported", +#define PE_INVALID_IPV6_ADDRESS 7 "Invalid IPv6 numeric address" }; @@ -658,6 +660,7 @@ static char *parse_errors[] = { *(p) = (v); \ } while (0) +#ifdef INET6 /* The following two functions were adapted from glibc. */ static int @@ -787,7 +790,7 @@ is_valid_ipv6_address (const char *str, const char *end) return 1; } - +#endif /* Parse a URL. @@ -860,6 +863,7 @@ url_parse (const char *url, int *error) return NULL; } +#ifdef INET6 /* Check if the IPv6 address is valid. */ if (!is_valid_ipv6_address(host_b, host_e)) { @@ -869,6 +873,10 @@ url_parse (const char *url, int *error) /* Continue parsing after the closing ']'. */ p = host_e + 1; +#else + SETERR (error, PE_IPV6_NOT_SUPPORTED); + return NULL; +#endif } else { -- 2.39.2