diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/net.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libstd/net.rs b/src/libstd/net.rs index 68f8f29748a..2325598a2d3 100644 --- a/src/libstd/net.rs +++ b/src/libstd/net.rs @@ -49,10 +49,13 @@ Failure: String must be a valid IPv4 address */ fn parse_addr(ip: str) -> ip_addr { - let parts = vec::map(str::split_byte(ip, "."[0]), - {|s| uint::from_str(s) }); + let parts = vec::map(str::split_byte(ip, "."[0]), {|s| + alt uint::from_str(s) { + some(n) if n <= 255u { n } + _ { fail "Invalid IP Address part." } + } + }); if vec::len(parts) != 4u { fail "Too many dots in IP address"; } - for i in parts { if i > 255u { fail "Invalid IP Address part."; } } ipv4(parts[0] as u8, parts[1] as u8, parts[2] as u8, parts[3] as u8) } |
