lkml.org 
[lkml]   [2007]   [Nov]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Is there any word about this bug in gcc ?
WANG Cong wrote:
> On Tue, Nov 20, 2007 at 10:13:42AM +0800, zhengyi wrote:
>> Is there any relevance to the kernel ?
>>
>> I found the folowing code here:
>> http://linux.solidot.org/article.pl?sid=07/11/19/0512218&from=rss
>>
>> -------------------------------------------------------------------
>> int main( void )
>> {
>> int i=2;
>> if( -10*abs (i-1) == 10*abs(i-1) )
>> printf ("OMG,-10==10 in linux!\n");
>> else
>> printf ("nothing special here\n") ;
>>
>> return 0 ;
>> }
>
> I think no. It is considered a bug in abs(), kernel, of course,
> doesn't use glibc's abs().
>

Wrong.

abs() is internal to gcc, and the above is optimized out at compile
time, so any user of abs() as a function at all is vulnerable.

However, the Linux kernel defines abs() as a macro:

#define abs(x) ({ \
int __x = (x); \
(__x < 0) ? -__x : __x; \
})

... which means gcc never sees it. So the kernel isn't affected,
because it doesn't use *gcc's* abs().

-hpa

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-11-20 06:13    [W:1.356 / U:0.052 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site