Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 25 Jun 2020 23:31:32 -0500
From: Daniel Santos <daniel@...t.us>
To: Khem Raj <raj.khem@...il.com>, musl@...ts.openwall.com,
 Daniel Santos <daniel.santos@...ox.com>
Subject: Re: [PATCH] Fix signed compare warning

On 6/25/20 10:58 AM, Khem Raj wrote:
>
> On 6/24/20 4:20 PM, Daniel Santos wrote:
>> Signed-off-by: Daniel Santos <daniel.santos@...ox.com>
>> ---
>>  src/thread/__timedwait.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/thread/__timedwait.c b/src/thread/__timedwait.c
>> index 666093be..9829b93e 100644
>> --- a/src/thread/__timedwait.c
>> +++ b/src/thread/__timedwait.c
>> @@ -38,7 +38,7 @@ int __timedwait_cp(volatile int *addr, int val,
>>  	if (priv) priv = FUTEX_PRIVATE;
>>  
>>  	if (at) {
>> -		if (at->tv_nsec >= 1000000000UL) return EINVAL;
>> +		if ((unsigned long)at->tv_nsec >= 1000000000UL) return EINVAL;
>>  		if (__clock_gettime(clk, &to)) return EINVAL;
>>  		to.tv_sec = at->tv_sec - to.tv_sec;
>>  		if ((to.tv_nsec = at->tv_nsec - to.tv_nsec) < 0) {
>>
> may be use < 0 || >= 1000000000L and avoid the cast.
> there is a similar issue in src/thread/pthread_cond_timedwait.c as well
Thank you for that.  I'll resubmit changing both instances.

In this case, the POSIX spec requires nt_nsec to be a long (
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/time.h.html
).  Either way, a good optimizer should convert this into an unsigned
compare.  My early years in 6502 assembly sort-of shapes my thinking, as
I try to write higher level code as similarly to the assembly I presume
the compiler will emit.  But if the project has a strong preference to
avoid casts, I can change it.

Thanks!
Daniel

Powered by blists - more mailing lists

Your e-mail address:

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.