[PATCH v2] Linux: Fix UTC offset setting in settimeofday for __TIMESIZE != 64
Adhemerval Zanella
adhemerval.zanella@linaro.org
Tue Jun 30 19:12:56 GMT 2020
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.
> + else
> + {
> + struct __timeval64 tv64 = valid_timeval_to_timeval64 (*tv);
> + return __settimeofday64 (&tv64, tz);
> + }
> }
> #endif
> weak_alias (__settimeofday, settimeofday);
>
More information about the Libc-alpha
mailing list