Weekly cppcheck run against Aug 27 Git Tree

James McKenzie jjmckenzie51 at earthlink.net
Thu Aug 27 23:02:25 CDT 2009


chris ahrendt wrote:
>
>
> ----- Original Message ----
> From: Ben Klein <shacklein at gmail.com>
> To: chris ahrendt <celticht32 at yahoo.com>
> Cc: wine-devel at winehq.org
> Sent: Thursday, August 27, 2009 10:06:56 PM
> Subject: Re: Weekly cppcheck run against Aug 27 Git Tree
>
> 2009/8/28 chris ahrendt <celticht32 at yahoo.com>:
>   
>> Mike Kaplinskiy wrote:
>>     
>>> On Thu, Aug 27, 2009 at 3:52 PM, chris ahrendt<celticht32 at yahoo.com> wrote:
>>>
>>>       
>>>> This is the result of running cppcheck 1.35 with the --all parm against
>>>> the august 27th Git tree:
>>>>
>>>> [../wine-git/dlls/dbghelp/msc.c:88]: (possible error) Array index out of
>>>> bounds
>>>> [../wine-git/dlls/dbghelp/msc.c:89]: (possible error) Array index out of
>>>> bounds
>>>>
>>>>         
>>> False positive, apparently the numbers are hardcoded as:
>>> 72     char        msg[128];
>>> 88         msg[10 + 3 * 16] = ' '; // = 58<127
>>> 89         msg[10 + 3 * 16 + 1 + 16] = '\0'; // = 75<127
>>>       
>> Mike While yes the hard coded one above is a false positive... I would
>> argue its still a bug that probably needs to get fixed...
>>     
>
>   
>> I don't follow this logic. How is it a bug (in Wine) exactly?
>>     
>
> I thought one of the programming standards was the fact you don't hard code values IE 10+3*16... 
> it should probably be :
>
> msg_blank = 10+3*16; // These go into header files
> msg_length = 128; // This goes into header file
>
> char msg[msg_length];
> memset(msg, 0, sizeof(msg));
> memset(msg, ' ', msg_blank); // or it could even be msg[msg_blank] = ' '; if only position 58 needs to be a ' ' , but I prefer the first method.
>
> does pretty much the same thing except for one point.
> Whatever is in the local stack at the point of assigning the msg buffer will be still there unless you initialise it to null.
>
>   
I like your logic, but why not just do this:

msg_blank= 58;
msg_yada_yada=75;
msg_length=128;

This sets all of the variables using plain values and then they can be
updated as necessary.

James McKenzie





More information about the wine-devel mailing list