Linux "NULL pointer dereferece" in the News...

Joel Rees joel.rees at gmail.com
Mon Jul 20 01:25:15 UTC 2009


Rahul Sundaram wrote,
> On 07/19/2009 11:31 PM, Tom Horsley wrote,
> > On Sun, 19 Jul 2009 23:11:52 +0530
> > Rahul Sundaram wrote,
> >
> >> It is not so simple. This is not a compiler bug. I suggest you read
> >> through http://lwn.net/Articles/341773/rss to understand why.
> >
> > I did. It is a compiler bug no matter what a bunch of language  
> lawyer
> > holier than thou compiler developers say :-).
>
> The kernel developers claim it is a kernel bug and the compiler
> developers claim it is not their bug and this everybody agrees with  
> and
> yet you don't agree with all of them? Who is being holier than thou  
> here?
>
> Kernel first dereferences a pointer, and after that checks whether  
> it's
> NULL.  It is quite common as a compiler optimization to compile out  
> code
> like this.
>
> Rahul


I vaguely remember some of the reasons (mainly the difficulty of  
untangling the semantics of pointer tests), but, I must admit, after  
using Java long enough, it seems odd to me that the C compiler would  
be smart enough to catch the theoretical "don't care" and not smart  
enough to distinguish between the reasons for the don't care.

I think I remember, way back when, using C compilers that would warn  
about code that isn't reached and is discarded, and even warn about  
code that dereferences a pointer before testing it after the pointer  
is returned by a function call.

So it definitely feels like both a coding error and a (design class?)  
bug in the way the compiler options interact.

It would be nice if certain combinations of options would at least  
issue "potential evil compiler switch combination" warnings before a  
compile started.

Maybe it does already, and the warnings are being swallowed in the  
make process?




More information about the fedora-list mailing list