Skip to content

Commit 64a1b8e

Browse files
committed
fix: sanitise_name: Don't consider punctuation and control chars as part of file extension (#6362)
1 parent 5772284 commit 64a1b8e

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/blob.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,9 @@ impl<'a> BlobObject<'a> {
279279
let ext: String = name
280280
.chars()
281281
.rev()
282-
.take_while(|c| !c.is_whitespace())
282+
.take_while(|c| {
283+
(!c.is_ascii_punctuation() || *c == '.') && !c.is_whitespace() && !c.is_control()
284+
})
283285
.take(33)
284286
.collect::<Vec<_>>()
285287
.iter()
@@ -982,6 +984,10 @@ mod tests {
982984
let (stem, ext) = BlobObject::sanitise_name("a. tar.tar.gz");
983985
assert_eq!(stem, "a. tar");
984986
assert_eq!(ext, ".tar.gz");
987+
988+
let (stem, ext) = BlobObject::sanitise_name("Guia_uso_GNB (v0.8).pdf");
989+
assert_eq!(stem, "Guia_uso_GNB (v0.8)");
990+
assert_eq!(ext, ".pdf");
985991
}
986992

987993
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]

0 commit comments

Comments
 (0)