[PATCH v2] Linux: Fix UTC offset setting in settimeofday for __TIMESIZE != 64

Florian Weimer fweimer@redhat.com
Tue Jun 30 19:19:37 GMT 2020


* Adhemerval Zanella:

> On 30/06/2020 15:45, Florian Weimer wrote:
>> The time argument is NULL in this case, and attempt to convert it
>> leads to a null pointer dereference.
>> 
>> This fixes commit d2e3b697da2433c08702f95c76458c51545c3df1
>> ("y2038: linux: Provide __settimeofday64 implementation").
>
> LGTM, thanks.
>
> Reviwed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
>
>> 
>> ---
>> v2: Add just a null pointer check.  Tested on x86_64-linux-gnu and
>>     i686-linux-gnu.
>> 
>>  sysdeps/unix/sysv/linux/settimeofday.c | 11 ++++++++---
>>  1 file changed, 8 insertions(+), 3 deletions(-)
>> 
>> diff --git a/sysdeps/unix/sysv/linux/settimeofday.c b/sysdeps/unix/sysv/linux/settimeofday.c
>> index ea45f1d7cb..6f4bc7ef3c 100644
>> --- a/sysdeps/unix/sysv/linux/settimeofday.c
>> +++ b/sysdeps/unix/sysv/linux/settimeofday.c
>> @@ -25,6 +25,7 @@
>>  int
>>  __settimeofday64 (const struct __timeval64 *tv, const struct timezone *tz)
>>  {
>> +  /* Backwards compatibility for setting the UTC offset.  */
>>    if (__glibc_unlikely (tz != 0))
>>      {
>>        if (tv != 0)
>> @@ -45,9 +46,13 @@ libc_hidden_def (__settimeofday64)
>>  int
>>  __settimeofday (const struct timeval *tv, const struct timezone *tz)
>>  {
>> -  struct __timeval64 tv64 = valid_timeval_to_timeval64 (*tv);
>> -
>> -  return __settimeofday64 (&tv64, tz);
>> +  if (__glibc_unlikely (tv == NULL))
>> +      return __settimeofday64 (NULL, tz);
>
> Indentation seems off here.

Thanks.  I'm going to fix this before committing.

Thanks,
Florian



More information about the Libc-alpha mailing list