about summary refs log tree commit diff
path: root/src/libstd/net
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-03-06 15:37:56 -0800
committerAlex Crichton <alex@alexcrichton.com>2015-03-06 15:37:56 -0800
commit3c2c516d0c4be32b003ab67132475f8fd7453e65 (patch)
treef2a0fc4a2a940c156bc71f92e58d1e7d1e86ffd2 /src/libstd/net
parent31af63748bbe62adab6bed6008deca67911bd0d2 (diff)
parent65b4eda5a6f270f5c30beec66c59825aba0524b9 (diff)
downloadrust-3c2c516d0c4be32b003ab67132475f8fd7453e65.tar.gz
rust-3c2c516d0c4be32b003ab67132475f8fd7453e65.zip
rollup merge of #23097: alexcrichton/issue-23076
The `rsplitn` call was called with 2 instead of 1 so the iterator would yield 3
items in some cases, not the 2 that it should have.

Closes #23076
Diffstat (limited to 'src/libstd/net')
-rw-r--r--src/libstd/net/addr.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libstd/net/addr.rs b/src/libstd/net/addr.rs
index 916abe78eb3..d975369af49 100644
--- a/src/libstd/net/addr.rs
+++ b/src/libstd/net/addr.rs
@@ -293,7 +293,7 @@ impl ToSocketAddrs for str {
         }
 
         // split the string by ':' and convert the second part to u16
-        let mut parts_iter = self.rsplitn(2, ':');
+        let mut parts_iter = self.rsplitn(1, ':');
         let port_str = try_opt!(parts_iter.next(), "invalid socket address");
         let host = try_opt!(parts_iter.next(), "invalid socket address");
         let port: u16 = try_opt!(port_str.parse().ok(), "invalid port value");
@@ -590,4 +590,9 @@ mod tests {
         let a = SocketAddr::new(IpAddr::new_v4(127, 0, 0, 1), 23924);
         assert!(tsa("localhost:23924").unwrap().contains(&a));
     }
+
+    #[test]
+    fn to_socket_addr_str_bad() {
+        assert!(tsa("1200::AB00:1234::2552:7777:1313:34300").is_err());
+    }
 }