summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-10-24 21:40:14 -0400
committerJohn Turner <jturner.usa@gmail.com>2025-10-24 21:40:14 -0400
commitccf7aeb98d6dcc67ce2190b7343bb4543165aeb0 (patch)
tree09e5533f66adf074b1c8248dd9f338d624635cc2
parentaa0d4edc57a9ac74a79f6f567e17ce583abb84de (diff)
downloadgentoo-utils-ccf7aeb98d6dcc67ce2190b7343bb4543165aeb0.tar.gz
disallow upper case letters in versions
-rw-r--r--src/atom/parsers.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/atom/parsers.rs b/src/atom/parsers.rs
index f4686f2..e1954c0 100644
--- a/src/atom/parsers.rs
+++ b/src/atom/parsers.rs
@@ -51,7 +51,9 @@ pub fn version<'a>() -> impl Parser<&'a str, Output = Version> {
let rev = version_number().preceded_by(tag("-r"));
numbers
- .and(opt(r#if(|c: &char| c.is_ascii_alphabetic())))
+ .and(opt(r#if(|c: &char| {
+ c.is_ascii_alphabetic() && c.is_ascii_lowercase()
+ })))
.and(opt(suffixes.preceded_by(tag("_"))))
.and(opt(rev))
.map(|(((numbers, letter), suffixes), rev)| Version {
@@ -287,4 +289,11 @@ mod test {
atom().check_finished(it).unwrap();
}
+
+ #[test]
+ fn test_version_with_uppercase_letter() {
+ let it = InputIter::new("foo/bar-1.0.0V");
+
+ assert!(atom().check_finished(it).is_err());
+ }
}