uutils/coreutils
date: strftime O modifier leaks as literal in C locale
Offen
#11.656 geöffnet am 05.04.2026
U - datefuzzinggood first issue
Repository-Metriken
- Stars
- (23.947 Sterne)
- PR-Merge-Metriken
- (Durchschn. Merge 5T 23h) (239 gemergte PRs in 30 T)
Beschreibung
Summary
date leaks the strftime O modifier as literal text (e.g. %Om → %om) while GNU strips it in C locale. The O modifier requests "alternative numeric symbols" and is a no-op under LC_ALL=C.
Found by a fuzz_date run.
Reproduction
$ LC_ALL=C TZ=UTC /usr/bin/date -d '2024-06-15' '+%Om-%Oy-%Ol'
06-24-12
$ echo $?
0
$ LC_ALL=C TZ=UTC target/debug/coreutils date -d '2024-06-15' '+%Om-%Oy-%Ol'
%Om-%Oy-%Ol
$ echo $?
0
The E modifier is similarly affected.
Test
#[test]
fn test_date_strftime_o_modifier() {
new_ucmd!()
.env("LC_ALL", "C")
.env("TZ", "UTC")
.arg("-d")
.arg("2024-06-15")
.arg("+%Om-%Oy-%Ol")
.succeeds()
.stdout_is("06-24-12\n");
}