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()) + } } }