NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: lib/40422: struct tm cannot represent full range of 64-bit time_t,breaks mktime(3)



Sorry, I was abroad and didn't read list mail, otherwise
I'd have mentioned your PR in the commit msg.
(and it would have saved me some time to identify the
function in localtime.c where the overflow happens)

tnn%NetBSD.org@localhost said:
> functions like localtime(3) need to be aware of this and should return
> NULL and set errno appropriately if the time is too large to be
> represented

Yes, but with the current localtime.c the change looks invasive.
(As I understand it the overflow happens in timesub() which
has no return value.)
Just had a look at tzcode2008h - timesub() can return an error,
and it seems to do the right check.

So I think the way to go is to update the code to the
current tzcode release (which is 2008h or the upcoming
2009a - see Robert Elz's mail to tech-userlevel).
localtime.c rev. 1.43 should fix the problem for
applications as long as they use "reasonable" time_t
values. (Could you test with your testcases?)
I'd suggest to defer the additional localtime()
etc checks until tzcode is updated.

best regards
Matthias




-------------------------------------------------------------------
-------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich

Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzende des Aufsichtsrats: MinDir'in Baerbel Brumme-Bothe
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),
Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr. Harald Bolt,
Dr. Sebastian M. Schmidt
-------------------------------------------------------------------
-------------------------------------------------------------------


Home | Main Index | Thread Index | Old Index