diff options
| author | varkor <github@varkor.com> | 2017-12-11 23:02:14 +0000 |
|---|---|---|
| committer | varkor <github@varkor.com> | 2017-12-11 23:02:14 +0000 |
| commit | bd1cf04ca7b9ffb3654aaa6c0b3106d6a381bc7f (patch) | |
| tree | 342c8b97e605158944c8076a81ef72febb839c5f /src/libstd/net/parser.rs | |
| parent | ddbb27a2414db79bef0a5858b440b04b545c80fa (diff) | |
| download | rust-bd1cf04ca7b9ffb3654aaa6c0b3106d6a381bc7f.tar.gz rust-bd1cf04ca7b9ffb3654aaa6c0b3106d6a381bc7f.zip | |
Reject superfluous `::` in IPv6 addresses
Fixes #46263.
Diffstat (limited to 'src/libstd/net/parser.rs')
| -rw-r--r-- | src/libstd/net/parser.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libstd/net/parser.rs b/src/libstd/net/parser.rs index 9f7125fb935..261d44eebaa 100644 --- a/src/libstd/net/parser.rs +++ b/src/libstd/net/parser.rs @@ -246,7 +246,9 @@ impl<'a> Parser<'a> { } let mut tail = [0; 8]; - let (tail_size, _) = read_groups(self, &mut tail, 8 - head_size); + // `::` indicates one or more groups of 16 bits of zeros + let limit = 8 - (head_size + 1); + let (tail_size, _) = read_groups(self, &mut tail, limit); Some(ipv6_addr_from_head_tail(&head[..head_size], &tail[..tail_size])) } |
