From b9b97bbb9d3503381de4b1beb5fcbf69e8e4c68d Mon Sep 17 00:00:00 2001 From: Smitty Date: Fri, 9 Jul 2021 12:54:02 -0400 Subject: [PATCH] Reject too-long IPs quicker Now that there can't be a bunch of leading zeros, parsing can be optimized a bit. --- library/std/src/net/parser.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/library/std/src/net/parser.rs b/library/std/src/net/parser.rs index d43d40400aba..df6bbdeab899 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 { - 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()) + } } }