Le 04/01/2026 à 21:52, Pádraig Brady a écrit :
On 04/01/2026 17:41, Sylvestre Ledru wrote:
Hello

-d accepts some invalid inputs. For example:

$ /usr/bin/date -d "("
Sun Jan  4 00:00:00 CET 2026

The patch in gnulib rejects it, the other add a test in coreutils

with the patch:
$ ./src/date -d '('
date: invalid date ‘(’

Note that  /usr/bin/date -d "[", ".", "^" already generate an error

(found with a differential fuzzer)
Well parenthesis are special in GNU date as (documented)
they can be used to introduce comments.

    $ date --debug -d '2003(comment)-02-01'
    date: parsed date part: (Y-M-D) 2003-02-01
    date: input timezone: system default
    date: warning: using midnight as starting time: 00:00:00

Also related is that the empty string is considered valid,
and interpreted as time 0 of the current day.

    $ date --debug -d ''  date: parsed number part: 00:00:00
    date: input timezone: system default
    date: using specified time as starting value: '00:00:00'

Also a single '(' is treated as comment to end of line

    $ date --debug -d '1(ignore comment to eol'
    date: parsed number part: 01:00:00
    date: input timezone: system default
    date: using specified time as starting value: '01:00:00'

So in combination the single '(' is treated like ''

I'm not sure we should change this.
Like some script may be defaulting to midnight like:

    $ date -d "$optional_time"

Interesting, thanks!

If this is ok,  I will add some tests, i don't think it is properly covered 
today!

Cheers
Sylvestre


Reply via email to