[krbdev.mit.edu #3359] strftime formats in krb5_timestamp_to_sfstring
Ken Raeburn via RT
rt-comment at krbdev.mit.edu
Thu Jan 19 20:49:49 EST 2006
The strftime formats tried by this function, in order, are:
"%c", /* Default locale-dependent date and time */
"%d %b %Y %T", /* dd mon yyyy hh:mm:ss */
"%x %X", /* locale-dependent short format */
"%d/%m/%Y %R" /* dd/mm/yyyy hh:mm */
If they all fail, we then try:
sprintf(buffer, "%02d/%02d/%4d %02d:%02d",
tmp->tm_mday, tmp->tm_mon+1, 1900+tmp->tm_year,
tmp->tm_hour, tmp->tm_min);
which agrees with the last strftime format, at least.
Bug #1: We don't test for localtime(_r) failing. Granted, failure of
that function seems pretty unlikely, but some email I've gotten from
Lenny Foner shows he's got a weird situation where klist shows all the
times as "01/00/00 00:00:00", which would be explained by localtime
failing and a block of zeros readable at address 0 (NULL) (or by
localtime_r filling in zeros, or localtime_r not doing anything and
the stack slots containing zeros). With the recent leap second,
there's probably been a lot of timezone-data tweaking lately.
Bug #1a: Check the callers of krb5_timestamp_to_sfstring and make sure
they check for errors, too. It looks like on a returned error, klist
will simply fail to print anything out, instead of printing a broken
string.
Bug #2: The day/month/year format is ambiguous, and arguably wrong for
US users. I'd suggest we go with ISO 8601 and RFC 3339
recommendations, specifically "yyyy-mm-dd HH:MM[:SS]", with either
space or "T" separating the date and time. (I doubt we want the time
zone data reported.)
Also, check the various standards and other specs: Is %c always
supported? Is there any reason for so many fallbacks?
Ken
More information about the krb5-bugs
mailing list