strptime() could hangs for hours

Corinna Vinschen vinschen@redhat.com
Mon Feb 14 14:13:00 GMT 2011


On Feb 14 11:41, Aleksandr Platonov wrote:
> Hi,
> strptime() function could hangs if format string contains characters
> which set date by week number (U,W,V).
> Example:
> struct tm tm;
> tm.tm_year = 0x6FFFFFFF;
> strptime("52", "%U", &tm);
> 
> This happens because first_day() function call hangs for hours if big
> year value is passed to it.
> We could not assume that tm_year field of tm structure has correct value
> at processing U,V,W characters in strptime(), so first_day() function
> parameter could have any value.
> In BSD libc characters U,V and W are ignored (only range check is
> performed).
> Is this behaviour of strptime() in newlib correct?

No, it's not.  Probably the right thing to do would be to store the
information that U,V,W is present together with the given week number,
and to calculate the information when the string has been completely
scanned and we only have a valid year, but no day or month.  Or,
as on BSD, ignore the input and just check validity.

Does anybody want to provide a patch?


Corinna

-- 
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat



More information about the Newlib mailing list