Skip to content

Commit 4756547

Browse files
Michael Rodlerseanmonstar
authored andcommitted
When parsing Uri authority, check that the square brackets are in the correct order.
This avoids panic when attempting to parse odd strings like `]o[`. Signed-off-by: Michael Rodler <mrodler@amazon.de> Reviewed-by: Daniele Ahmed <ahmeddan@amazon.de>
1 parent 746fce8 commit 4756547

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/uri/authority.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ impl Authority {
9797
start_bracket = true;
9898
}
9999
b']' => {
100-
if end_bracket {
100+
if (!start_bracket) || end_bracket {
101101
return Err(ErrorKind::InvalidAuthority.into());
102102
}
103103
end_bracket = true;
@@ -658,14 +658,17 @@ mod tests {
658658
let err = Authority::try_from([0xc0u8].as_ref()).unwrap_err();
659659
assert_eq!(err.0, ErrorKind::InvalidUriChar);
660660

661-
let err = Authority::from_shared(Bytes::from_static([0xc0u8].as_ref()))
662-
.unwrap_err();
661+
let err = Authority::from_shared(Bytes::from_static([0xc0u8].as_ref())).unwrap_err();
663662
assert_eq!(err.0, ErrorKind::InvalidUriChar);
664663
}
665664

666665
#[test]
667666
fn rejects_invalid_use_of_brackets() {
668667
let err = Authority::parse_non_empty(b"[]@[").unwrap_err();
669668
assert_eq!(err.0, ErrorKind::InvalidAuthority);
669+
670+
// reject tie-fighter
671+
let err = Authority::parse_non_empty(b"]o[").unwrap_err();
672+
assert_eq!(err.0, ErrorKind::InvalidAuthority);
670673
}
671674
}

0 commit comments

Comments
 (0)