cppcheck: arrayIndexOutOfBounds report in stortree.cxx (store module)

Stephan Bergmann sbergman at redhat.com
Mon Jan 19 02:24:08 PST 2015


On 01/17/2015 03:49 PM, julien2412 wrote:
> Cppcheck reported this:
>      <error file="store/source/stortree.cxx" line="52"
> id="arrayIndexOutOfBounds" severity="error" msg="Array
> 'm_pData[1]' accessed at index 1, which is out of bounds."/>
>
>       41 OStoreBTreeNodeData::OStoreBTreeNodeData (sal_uInt16 nPageSize)
>       42     : OStorePageData (nPageSize)
>       43 {
>       44     base::m_aGuard.m_nMagic = store::htonl(self::theTypeId);
>       45     base::m_aDescr.m_nUsed  = store::htons(self::thePageSize); //
> usageCount(0)
>       46     self::m_aGuard.m_nMagic = store::htonl(0); // depth(0)
>       47
>       48     sal_uInt16 const n = capacityCount();
>       49     T const          t;
>       50
>       51     for (sal_uInt16 i = 1; i < n; i++)
>       52         m_pData[i] = t;

That m_pData is a "flexible array member" whose actual length is 
controlled dynamically.  Cppcheck could probably make use of a heuristic 
to treat a trailing member declared as an array of length 1 as such a 
flexible array, as do some other static analysis tools.


More information about the LibreOffice mailing list