diff options
| author | Smitty <me@smitop.com> | 2021-07-09 12:54:02 -0400 |
|---|---|---|
| committer | Smitty <me@smitop.com> | 2021-07-09 12:54:02 -0400 |
| commit | b9b97bbb9d3503381de4b1beb5fcbf69e8e4c68d (patch) | |
| tree | 48c0a85795639eb034a63a774fb6d4f6b5e3ccc1 | |
| parent | 69de693af96790a2414a6d37148b524fde457f53 (diff) | |
| download | rust-b9b97bbb9d3503381de4b1beb5fcbf69e8e4c68d.tar.gz rust-b9b97bbb9d3503381de4b1beb5fcbf69e8e4c68d.zip | |
Reject too-long IPs quicker
Now that there can't be a bunch of leading zeros, parsing can be optimized a bit.
| -rw-r--r-- | library/std/src/net/parser.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/library/std/src/net/parser.rs b/library/std/src/net/parser.rs index d43d40400ab..df6bbdeab89 100644 --- a/library/std/src/net/parser.rs +++ b/library/std/src/net/parser.rs @@ -289,7 +289,12 @@ impl FromStr for IpAddr { impl FromStr for Ipv4Addr { type Err = AddrParseError; fn from_str(s: &str) -> Result<Ipv4Addr, AddrParseError> { - Parser::new(s).parse_with(|p| p.read_ipv4_addr()) + // don't try to parse if too long + if s.len() > 15 { + Err(AddrParseError(())) + } else { + Parser::new(s).parse_with(|p| p.read_ipv4_addr()) + } } } |
