[Libreoffice] cppcheck : snprintf size is out of bounds

Julien jnabet2412 at free.fr
Fri Nov 12 03:44:23 PST 2010


Hello,

I'm currently running the last version of cppcheck (i updated with git 
this morning) and i get this error :
snprintf size is out of bounds

ex:
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:542]: (error) 
snprintf size is out of bounds
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:552]: (error) 
snprintf size is out of bounds
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:562]: (error) 
snprintf size is out of bounds
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:590]: (error) 
snprintf size is out of bounds
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:596]: (error) 
snprintf size is out of bounds
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:607]: (error) 
snprintf size is out of bounds
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:653]: (error) 
snprintf size is out of bounds
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:661]: (error) 
snprintf size is out of bounds
[./libs-gui/vcl/unx/source/printergfx/common_gfx.cxx:671]: (error) 
snprintf size is out of bounds

If i take the first line and i open the file, i see this :
void
PrinterGfx::DrawPolyLineBezier (sal_uInt32 nPoints, const Point* pPath, 
const BYTE* pFlgAry)
{
     const sal_uInt32 nBezString = 1024;
     sal_Char pString[nBezString];

     if ( nPoints > 1 && maLineColor.Is() && pPath )
     {
         PSSetColor (maLineColor);
         PSSetColor ();
         PSSetLineWidth ();

         snprintf(pString, nBezString, "%li %li moveto\n", pPath[0].X(), 
pPath[0].Y());

I don't understand where's the pb with snprintf, pString has a size of 
1024 and snprintf takes a size of 1024.

Is this a false positive to give to the cppcheck guys ?

Julien.

PS : is there a pb with my patch "[Libreoffice] [PATCH] 
RTL_CONSTASCII_USTRINGPARAM for calc_unoobj" ? if it's the case, don't 
hesitate to tell me, i'll correct it.


More information about the LibreOffice mailing list