mirror of
https://github.com/moparisthebest/curl
synced 2024-11-12 04:25:08 -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
|
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)
|
Daniel Stenberg (30 Jul 2008)
|
||||||
- Phil Blundell added the CURLOPT_SCOPE option, as well as adjusted the URL
|
- 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
|
parser to allow numerical IPv6-addresses to be specified with the scope
|
||||||
|
@ -904,6 +904,9 @@ IPv6
|
|||||||
|
|
||||||
sftp://[fe80::1234%251]/
|
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
|
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)
|
if (!data->state.this_is_a_follow)
|
||||||
/* Don't honour a scope given in a Location: header */
|
/* Don't honour a scope given in a Location: header */
|
||||||
conn->scope = scope;
|
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 */
|
/* detect and extract RFC2732-style IPv6-addresses */
|
||||||
if(*proxyptr == '[') {
|
if(*proxyptr == '[') {
|
||||||
char *ptr = ++proxyptr; /* advance beyond the initial bracket */
|
char *ptr = ++proxyptr; /* advance beyond the initial bracket */
|
||||||
while(*ptr && (ISXDIGIT(*ptr) || (*ptr == ':')))
|
while(*ptr && (ISXDIGIT(*ptr) || (*ptr == ':') || (*ptr == '%') || (*ptr == '.')))
|
||||||
ptr++;
|
ptr++;
|
||||||
if(*ptr == ']') {
|
if(*ptr == ']') {
|
||||||
/* yeps, it ended nicely with a bracket as well */
|
/* yeps, it ended nicely with a bracket as well */
|
||||||
*ptr = 0;
|
*ptr++ = 0;
|
||||||
portptr = ptr+1;
|
} else
|
||||||
}
|
infof(data, "Invalid IPv6 address format\n");
|
||||||
|
portptr = ptr;
|
||||||
/* Note that if this didn't end with a bracket, we still advanced the
|
/* 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
|
* proxyptr first, but I can't see anything wrong with that as no host
|
||||||
* name nor a numeric can legally start with a bracket.
|
* name nor a numeric can legally start with a bracket.
|
||||||
|
Loading…
Reference in New Issue
Block a user