mirror of
https://github.com/moparisthebest/curl
synced 2024-11-11 20:15:03 -05:00
Fixed parsing of an IPv6 proxy address to support a scope identifier,
as well as IPv4 addresses in IPv6 format. Also, better handle the case of a malformatted IPv6 address (avoid empty and NULL strings).
This commit is contained in:
parent
4c1c479fcf
commit
660516914e
5
CHANGES
5
CHANGES
@ -6,6 +6,11 @@
|
||||
|
||||
Changelog
|
||||
|
||||
Daniel Fandrich (31 Jul 2008)
|
||||
- Fixed parsing of an IPv6 proxy address to support a scope identifier,
|
||||
as well as IPv4 addresses in IPv6 format. Also, better handle the case
|
||||
of a malformatted IPv6 address (avoid empty and NULL strings).
|
||||
|
||||
Daniel Stenberg (30 Jul 2008)
|
||||
- Phil Blundell added the CURLOPT_SCOPE option, as well as adjusted the URL
|
||||
parser to allow numerical IPv6-addresses to be specified with the scope
|
||||
|
@ -904,6 +904,9 @@ IPv6
|
||||
|
||||
sftp://[fe80::1234%251]/
|
||||
|
||||
IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface
|
||||
or --ftp-port options) should not be URL encoded.
|
||||
|
||||
|
||||
MAILING LISTS
|
||||
|
||||
|
12
lib/url.c
12
lib/url.c
@ -3102,7 +3102,8 @@ static CURLcode ParseURLAndFillConnection(struct SessionHandle *data,
|
||||
if (!data->state.this_is_a_follow)
|
||||
/* Don't honour a scope given in a Location: header */
|
||||
conn->scope = scope;
|
||||
}
|
||||
} else
|
||||
infof(data, "Invalid IPv6 address format\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -3406,13 +3407,14 @@ static CURLcode parse_proxy(struct SessionHandle *data,
|
||||
/* detect and extract RFC2732-style IPv6-addresses */
|
||||
if(*proxyptr == '[') {
|
||||
char *ptr = ++proxyptr; /* advance beyond the initial bracket */
|
||||
while(*ptr && (ISXDIGIT(*ptr) || (*ptr == ':')))
|
||||
while(*ptr && (ISXDIGIT(*ptr) || (*ptr == ':') || (*ptr == '%') || (*ptr == '.')))
|
||||
ptr++;
|
||||
if(*ptr == ']') {
|
||||
/* yeps, it ended nicely with a bracket as well */
|
||||
*ptr = 0;
|
||||
portptr = ptr+1;
|
||||
}
|
||||
*ptr++ = 0;
|
||||
} else
|
||||
infof(data, "Invalid IPv6 address format\n");
|
||||
portptr = ptr;
|
||||
/* Note that if this didn't end with a bracket, we still advanced the
|
||||
* proxyptr first, but I can't see anything wrong with that as no host
|
||||
* name nor a numeric can legally start with a bracket.
|
||||
|
Loading…
Reference in New Issue
Block a user