Subject: Re: standards/21722: ISO-C conforming use of struct tm can crash
To: None <firstname.lastname@example.org>
From: Simon Burge <email@example.com>
Date: 05/31/2003 00:06:58
Richard Earnshaw wrote:
> >Number: 21722
> >Category: standards
> >Synopsis: ISO-C conforming use of struct tm can crash
> A program that makes use of only the fields in struct tm that are
> specified in the ISO-C standards can crash inside of strftime because
> the library accesses non-standard fields.
> The following program sets all of the fields required by ISO-C and then
> calls strftime with a %Z template (an ISO-C documented option).
> There is a similar problem with %z (part of c99) and use of the
> tm_gmtoff. But that only causes a bogus result to be returned.
> strftime and other time functions must not depend on non-iso fields
> being set when performing actions documented by the standard.
One `fix' would be to ignore (struct tm)->tm_zone when processing 'Z'
(ie, just remove the #ifdef TM_ZONE/#endif block in strftime.c) and use
only tzname. I think we can also use the timezone variable for 'z'
I don't know if this is the best way to fix this problem :-)
Simon Burge <firstname.lastname@example.org>
NetBSD Support and Service: http://www.wasabisystems.com/