| delorie.com/archives/browse.cgi | search |
| X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f |
| X-Recipient: | djgpp AT delorie DOT com |
| X-Original-DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; |
| d=gmail.com; s=20161025; | |
| h=mime-version:in-reply-to:references:from:date:message-id:subject:to; | |
| bh=82Z9ViTB7wQUF8SkiFjWnwS3cBIZI4+rEMWK+X1s/SU=; | |
| b=o17CbDFRO46ser0s4iELRYwoPDpDJoe3QD65YiYbqWBT4LfA4yfvuzcCLf9ByO/jzx | |
| 8GVn2V82MLud39eNE5VORDy8Nd9LihOxdsH/neRaYDb3fnif6vbexNDmyVgQ+F9eDv09 | |
| z/bx5Dhz6NtX3yEy0X9P2bgbnamRHs+Uu70P9b/ni8atF1WeHkxwYO6AQOsq6lrenRGi | |
| KxCVZyOuo13G3xmJQsQo8H67alzC/os8obPEwNQHCYXlipnjuNi+Z5Jk9tHo7v50e7QV | |
| sBMiBOaiP2Dlqvlh7EzH+B24qQ2nnXXGhcKFtFkxID1u9Uwp3ictep7YzNk+PNSNCvSn | |
| CbnA== | |
| X-Google-DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; |
| d=1e100.net; s=20161025; | |
| h=x-gm-message-state:mime-version:in-reply-to:references:from:date | |
| :message-id:subject:to; | |
| bh=82Z9ViTB7wQUF8SkiFjWnwS3cBIZI4+rEMWK+X1s/SU=; | |
| b=Iei21P3+FTzr/oRN4N0khGTlC4sDwN8s3EGvpVdJiKdGfMK/i8pqpadXBSLhkdlboE | |
| QQNmDMnqbOQgLlyRAtJ7cN9n+Yh4NSkC7MTA9UEkqyZT8sYKzQ2gdbY3czDkunw8vS8h | |
| LbZQxwGS84G/2pjmlHboEmSmekwGcqyQ45Xnhzu3PBQw34Qu5M5sTtRgVluGUCWcCBLE | |
| YnOFz/9Wh6Hgnxuq0hU75G5/osOSX6Pr8Z0So04tp2NNjfCrBKXEdHoSZKjuwuvUzZrS | |
| cF2tQf3LgbTmbNM5FcXKeR/AUsvr/+peKkRzqWiVTwSrvZquyzz+fyoMQyqspjErsMsY | |
| xaaQ== | |
| X-Gm-Message-State: | AODbwcBKl9l8kLSq/pUZLIRhK0tZyvxF70OhG/bwCWf0OoVKkay6vYAJ |
| Yympsdf9LkZKRYeYxUdpxDgEBEaUYw== | |
| X-Received: | by 10.55.90.2 with SMTP id o2mr15654701qkb.251.1494016997067; Fri, |
| 05 May 2017 13:43:17 -0700 (PDT) | |
| MIME-Version: | 1.0 |
| In-Reply-To: | <590CCAE9.3090904@gmx.de> |
| References: | <6c031262-a53d-4ede-925d-ef279a2e1286 AT googlegroups DOT com> <590CCAE9 DOT 3090904 AT gmx DOT de> |
| From: | "Ozkan Sezer (sezeroz AT gmail DOT com) [via djgpp AT delorie DOT com]" <djgpp AT delorie DOT com> |
| Date: | Fri, 5 May 2017 23:43:16 +0300 |
| Message-ID: | <CAA2C=vCmPrmtg0OQNzq28KYuDmUmzAVqi49ZOWVDcBkzzYkeVg@mail.gmail.com> |
| Subject: | Re: Bug in timestamp arithmetic |
| To: | djgpp AT delorie DOT com |
| Reply-To: | djgpp AT delorie DOT com |
| Errors-To: | nobody AT delorie DOT com |
| X-Mailing-List: | djgpp AT delorie DOT com |
| X-Unsubscribes-To: | listserv AT delorie DOT com |
On 5/5/17, Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de) [via
djgpp AT delorie DOT com] <djgpp AT delorie DOT com> wrote:
> Am 05.05.2017 15:27, schrieb Arrigo Marchiori (ardovm AT yahoo DOT it) [via
> djgpp AT delorie DOT com]:
>> Dear All,
>>
>> I am writing here to report a bug, as I could not do it through the
>> delorie.com web site.
>>
>> On my system, I did not install any timezone files. libc therefore
>> generates a ``default'' timezone. Such timezone has a random offset with
>> respect to GMT.
>>
>> The effect is that ctime(0) returns random values, such as "31 December
>> 1969", instead of "1 January 1970".
>>
>> This problem should be resolved by the patch you can find at the end of
>> this message.
>>
>> The patch must be applied to src/libc/ansi/time/ctime.c
>> Its effects are the following.
>>
>> - In function tzload(): the default timezone created from
>> _posixrules_data is actually parsed. It was not, because the nread
>> variable was not updated with its size.
>>
>> - In function tzparse(): the value for stdoffset is set to zero, if the
>> parameter lastditch is set. Before this patch, the value of stdoffset was
>> never assigned, and therefore the timezone received a random offset from
>> GMT.
>>
>> - In function tzparse(): after a new default timezone was created inside
>> sp, the `defaulttype' field was not updated. If the default data from
>> _posixrules was loaded correctly (see first point), sp->defaulttype would
>> be set to 1. But previous types have just been overwritten, therefore this
>> attribute must be set to zero, i.e. to the only current type.
>>
>> I hope this makes sense to you. Feel free to contact me if you need any
>> more information on this, or if you think I can be of any help integrating
>> it.
>>
>> Best regards,
>>
>>
>> Arrigo
>>
>>
>> --- src/libc/ansi/time/ctime.c.orig 2014-04-19 20:50:30.000000000 +0200
>> +++ src/libc/ansi/time/ctime.c 2017-05-05 14:20:54.988023000 +0200
>> @@ -362,7 +362,7 @@
>>
>> /* We've got a built-in copy of posixrules just in case */
>> memcpy(buf, _posixrules_data, sizeof(_posixrules_data));
>> - i = sizeof(_posixrules_data);
>> + nread = sizeof(_posixrules_data);
>> }
>> else
>> {
>> @@ -944,6 +944,7 @@
>> name += stdlen;
>> if (stdlen>= sizeof sp->chars)
>> stdlen = (sizeof sp->chars) - 1;
>> + stdoffset = 0;
>> }
>> else
>> {
>> @@ -1156,6 +1157,7 @@
>> sp->ttis[0].tt_gmtoff = -stdoffset;
>> sp->ttis[0].tt_isdst = 0;
>> sp->ttis[0].tt_abbrind = 0;
>> + sp->defaulttype = 0;
>> }
>> sp->charcnt = stdlen + 1;
>> if (dstlen != 0)
>>
>
>
> I also have usually neither TZ set nor djtzn205 installed and can verify
> the
> bug described by the poster. An inspection of ctime.c from the repository
> shows that the implementation has the different bugs described in the post
> leading to random timestamp around 1969-12-24 for my installation.
> IMO, the fix proposed is correct and it solves the problems as explained.
> A library compiled from repository sources and with the proposed patch
> applied produces the correct value for ctime(0) with and without djtzn205
> installed. Of course, if djtzn205 is installed, then ctime produces the
> right time string so the patch does not break anything.
> Any objections if the proposed fix is committed?
Looks OK to me.
>
> Regards,
> Juan M. Guerrero
>
>
--
O.S.
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |