Coverity reports on possible overruns of static arrays
eric.pouech at wanadoo.fr
Wed Nov 15 14:46:57 CST 2006
Paul Vriens a écrit :
> 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
> 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)
More information about the wine-devel