uutils/coreutils

date: strftime O modifier leaks as literal in C locale

Open

#11.656 geöffnet am 5. Apr. 2026

Auf GitHub ansehen
 (4 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Rust (1.852 Forks)batch import
U - datefuzzinggood first issue

Repository-Metriken

Stars
 (23.246 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 9T 14h) (216 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");
}

Contributor Guide