Am 09.07.2012 19:01, schrieb Anthony Liguori:
> On 07/09/2012 11:46 AM, Eric Blake wrote:
>> On 07/09/2012 10:07 AM, Markus Armbruster wrote:
>>
>>>>> This is an unconditional use of fd_type[0].  If floppy == NULL, this is
>>>>> dereferencing an uninitialized value.
>>>>>
>>>>> I'm not sure why the explicit initialization was removed...
>>>
>>> Brain fart on my part, sorry.  The old loop assigns only if the drive
>>> exists.  The new loop assigns unconditionally.  Except the whole loop is
>>> still conditional.
>>>
>>> Testing can't flag this, because floppy is never null.
>>>
>>>> Looks broken indeed. I just wonder why my gcc (or the buildbots) didn't
>>>> complain.
>>>
>>> Me too.  Looks like I should upgrade to a more recent gcc.
>>
>> It's probably not the version of the gcc you used, but whether or not
>> your CFLAGS include -O2.  Gcc has the (IMO very annoying) limitation
>> that uninitialized-use analysis can only be performed if you are also
>> doing optimization.  You have to use a tool like clang or Coverity if
>> you want more reliable uninitialized-use analysis even while building
>> -O0 debug images.
>>
> 
> Specifically, without -O, GCC doesn't do data flow analysis so any warning 
> that 
> requires DFA won't get triggered.
> 
> So in general, if you are normally building with -O0, make sure to also build 
> with -O in order to get full warnings.

Just checked it to be sure, this doesn't seem to be the reason:

CFLAGS=-O2 -D_FORTIFY_SOURCE=2 -g

Kevin

Reply via email to