Merge pull request #63 from tshepang/multiple-slashes

avoid misleading message
This commit is contained in:
Abhishek Chanda
2017-10-09 11:03:26 +01:00
committed by GitHub
3 changed files with 16 additions and 2 deletions

View File

@ -35,10 +35,12 @@ impl Error for IpNetworkError {
pub fn cidr_parts(cidr: &str) -> Result<(&str, &str), IpNetworkError> {
let parts = cidr.split('/').collect::<Vec<&str>>();
if parts.len() == 2 {
if parts.len() == 1 {
Err(IpNetworkError::InvalidCidrFormat(format!("CIDR must contain '/': {}", cidr)))
} else if parts.len() == 2 {
Ok((parts[0], parts[1]))
} else {
Err(IpNetworkError::InvalidCidrFormat(format!("CIDR must contain '/': {}", cidr)))
Err(IpNetworkError::InvalidCidrFormat(format!("CIDR must contain a single '/': {}", cidr)))
}
}

View File

@ -308,6 +308,12 @@ mod test {
assert_eq!(None, cidr);
}
#[test]
fn parse_v4_fail_two_slashes() {
let cidr: Option<Ipv4Network> = "10.1.1.1/24/".parse().ok();
assert_eq!(None, cidr);
}
#[test]
fn size_v4_24bit() {
let net: Ipv4Network = "0/24".parse().unwrap();

View File

@ -292,6 +292,12 @@ mod test {
assert_eq!(None, cidr);
}
#[test]
fn parse_v6_fail_two_slashes() {
let cidr: Option<Ipv6Network> = "::1/24/".parse().ok();
assert_eq!(None, cidr);
}
#[test]
fn mask_v6() {
let cidr = Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0), 40).unwrap();