On Sat, Nov 20, 2021 at 12:11 AM Alexander Kanavin
<alex.kana...@gmail.com> wrote:
>
> On Sat, 20 Nov 2021 at 05:13, Érico Nogueira <eric...@disroot.org> wrote:
>>
>> For what it's worth, most of the time64 support patches that I have seen
>> use "%lld" and `long long` as the type for portable representation of
>> time, instead of intmax_t, but each should work just as well as the
>> other.
>
>
> My original version did use %lld, but Khem tweaked it to use intmax_t. 
> Perhaps he can comment?

intmax_t is not particularly bounded like long long int and sounded
the right choice here say if we have 128bit
machines in future.

>
>>
>> Might be worth mentioning in the commit that musl 1.2.0 and above uses
>> time64 on all platforms, and that glibc 2.34 has added support for
>> time64 (which might be enabled by distro-wide CFLAGS), with possibly
>> 2.35 or 2.36 making it enabled by default.
>
>
> Yes, I can add that.
>
>>
>> This is the wrong fix, a temporary variable should be used. When time_t
>> is still 32 bits, it means you can accidentally write out of bounds for
>> times after 2038 on little endian plaforms; and on big endian platforms,
>> it's always writing out of bounds (and *only out of bounds*, before
>> 2038, so you can't even access the result of fscanf).

yes it seems that way, thanks for catching it.`

>>
>> Having now taken a second look at the code, I don't think this needs to
>> be treated as time_t, anyway? cache_config is a `long`, and it's reading
>> a max timeout value, which is unlikely to go beyond the hundreds of
>> seconds... Given that the function returns an `int`, I'd even consider
>> making `cache_config` an `int` directly.
>
>
> I can fix this as well if Khem confirms.

treating int is fine. debuginfod_config_cache() is still passed time_t as second
param in few call sites which are assigned to cache_config here, so we will
still need to convert/truncate that assignment.

>
> Thanks for the review.
>
> Alex

Reply via email to