Coverity reports on possible overruns of static arrays

Eric Pouech eric.pouech at wanadoo.fr
Wed Nov 15 14:46:57 CST 2006


Paul Vriens a écrit :
> Hi,
>
> we have quite a few places in the code where we do:
>
> WCHAR param[any-value];
>
> len = sizeof(param) / sizeof(WCHAR);
>
> param[len] = '\0';
>
> and of course more-or-less the same for CHAR arrays.
>
> This could lead (and the example does) to writing behind the end of
> param.
>
> I've submitted two patches for this, but I'm not sure just doing:
>
> param[len - 1] = '\0'; 
>
> is the correct/good approach.
>   
well, it depends what the rest of the code does...
anyway, param[len] is wrong...
use param[len-1] is the right situation but insure the other operations 
on the buffer (especially the ones before setting the terminating 
character) are done on a buffer of size len - 1

but you have to determine (on a case by case situation) if either the 
index of last index is really len - 1 in the rest of the code, OR if the 
programer didn't want a buffer of size any-value + 1, and forgot about 
the + 1 (but the rest of the code shall be looked at anyway)
A+



More information about the wine-devel mailing list