This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v2 1/2] [BZ #16141] strptime: extend %z range limits
- From: Will Newton <will dot newton at linaro dot org>
- To: James Perkins <james at loowit dot net>
- Cc: libc-alpha <libc-alpha at sourceware dot org>
- Date: Wed, 3 Dec 2014 09:41:03 +0000
- Subject: Re: [PATCH v2 1/2] [BZ #16141] strptime: extend %z range limits
- Authentication-results: sourceware.org; auth=none
- References: <1417573661-9902-1-git-send-email-james at loowit dot net>
On 3 December 2014 at 02:27, James Perkins <james@loowit.net> wrote:
> This is a fix for [BZ #16141] strptime %z offset restriction.
>
> strptime supports the parsing of a timezone offset from UTC time into the
> broken-out time field tm_gmtoff. It supports timezone offsets between
> UTC-12:00 and UTC+12:00, returning an error (NULL) for values outside
> that range.
>
> However, time zone offsets outside the current range limits exist both
> currently and historically:
>
> * Present day:
> - Pacific/Auckland (New Zealand) summer time +13:00
> - Pacific/Kiritimati (Christmas Island) +14:00
> - Pacific/Apia (Samoa) summer time +14:00
> * Historical offsets exceeded +15:00/-15:00
> * POSIX supports -24:00 to +25:00
> * Paul Eggert notes:
> - https://sourceware.org/ml/libc-alpha/2014-12/msg00068.html
>
> So, extend the timezone offset range to UTC-24:00 to UTC+25:00.
>
> James
>
> 2014-12-02 James Perkins james@loowit.net
>
> [BZ #16141]
> * time/strptime_l.c (__strptime_internal): Extend %z timezone
> offset range limits to UTC-24:00 to UTC+25:00 to parse current
> and historical uses.
> ---
> time/strptime_l.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
The patch looks ok modulo the nit below. It would be good to add a test however.
> diff --git a/time/strptime_l.c b/time/strptime_l.c
> index b3a612e..1cdce41 100644
> --- a/time/strptime_l.c
> +++ b/time/strptime_l.c
> @@ -777,7 +777,10 @@ __strptime_internal (rp, fmt, tmp, statep LOCALE_PARAM)
> return NULL;
> val = (val / 100) * 100 + ((val % 100) * 50) / 30;
> }
> - if (val > 1200)
> + /* valid range UTC-24 to +25, ala POSIX */
The comment should be a sentence so start with a capital and end with
a full-stop and a couple of spaces.
> + if (neg && val > 2400)
> + return NULL;
> + if (!neg && val > 2500)
> return NULL;
> tm->tm_gmtoff = (val * 3600) / 100;
> if (neg)
> --
> 1.7.9.5
>
--
Will Newton
Toolchain Working Group, Linaro