Integer overflow in Calc lcl_getSingleCellAddressFromXMLString nColumn computation
Regina Henschel
rb.henschel at t-online.de
Mon Mar 8 19:18:55 UTC 2021
Hi Stephan,
Your problem with table:cell-range-address="PivotChart" might be related
to bug https://bugs.documentfoundation.org/show_bug.cgi?id=112783
"PIVOT CHARTS: Save produces invalid file because of invalid cell address"
Kind regards
Regina
Stephan Bergmann schrieb am 08.03.2021 um 17:09:
> On 23/02/2021 11:08, Stephan Bergmann wrote:
>> On 23/02/2021 08:34, Stephan Bergmann wrote:
>>> I have no idea whether lcl_getSingleCellAddressFromXMLString is
>>> legitimately getting called here with those arguments (or if the real
>>> error is somewhere else), what that nColumn computation actually
>>> means, nor what's going on in general. If anybody knowledgeable
>>> about that code could please have a look.
>>
>> With a little more digging: However sc/qa/uitest/data/tdf107097.ods
>> was generated, its "Object 1/content.xml" sub-file contains the XML
>> element
>>
>>> <chart:plot-area chart:style-name="ch3"
>>> table:cell-range-address="PivotChart"
>>> chart:data-source-has-labels="column" svg:x="0.398cm" svg:y="0.991cm"
>>> svg:width="16.013cm" svg:height="9.381cm">
>>
>> whose table:cell-range-address attribute appears to what gets
>> processed here.
>
> On recent master, if I create a bare-bones pivot.ods containing a pivot
> chart (in a fresh Calc document, type "A" into A1 and "2" into A2, click
> into A1, then "Insert - Pivot Table... - OK" and drag "A" from
> "Available Fields" to "Column Fields" and "OK", then "Insert - Chart...
> - Finish", then save): The resulting pivot.ods "Object 1/content.xml"
> sub-file contains a chart:plot-area XML element with a
> table:cell-range-address="PivotChart" attribute as above, but which
> appears to be nonsense according to the ODF standard as quoted below.
>
> Maybe some Calc expert can shed some light on what is going on here, and
> if that
>
> <chart:plot-area table:cell-range-address="PivotChart" ...>
>
> is legitimate, and should legitimately be processed with
> lcl_getSingleCellAddressFromXMLString as is done here.
>
>> Now,
>> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1418304_253892949>
>> "19.593.6<chart:plot-area> (deprecated)" specifies that that attribute
>> shall be of type
>> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#datatype-cellRangeAddressList>
>> "18.3.6cellRangeAddressList" aka
>> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#CellRangeAddressList>
>> "9.2.5Cell Range Address List". Lacking whitespace, "PivotChart" is
>> apparently a list containing a single cell range addresses or cell
>> addresses, and lacking a colon, it apparently is a cell address.
>>
>> <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1415614_253892949>
>> "Referencing Table Cells" specifies the structure of such a cell address:
>>
>>> Cell addresses are constructed as follows:
>>>
>>> 1)The name of the table.
>>> 2)A dot “.” (U+002E, FULL STOP).
>>> 3)An alphabetic value representing the column. The letter A
>>> represents column 1, B represents column 2, and so on. AA represents
>>> column 27, AB represents column 28, and so on.
>>> 4)A numeric value representing the row. The number 1 represents
>>> the first row, the number 2 represents the second row, and so on.
>>
>> But lcl_getCellAddressFromXMLString and
>> lcl_getSingleCellAddressFromXMLString in
>> chart2/source/tools/XMLRangeHelper.cxx apparently attempt to parse
>> something rather different:
>>
>> * lcl_getCellAddressFromXMLString supports backslash quoting;
>>
>> * lcl_getCellAddressFromXMLString makes the leading table name and dot
>> optional;
>>
>> * lcl_getSingleCellAddressFromXMLString supports an optional "$";
>>
>> * lcl_getSingleCellAddressFromXMLString supports lower-case letters in
>> addition to upper-case letters for the column;
>>
>> * lcl_getSingleCellAddressFromXMLString makes the numeric value
>> representing the row optional.
>>
>> I'm still not sure what to make of all that. Is
>> sc/qa/uitest/data/tdf107097.ods bogus and should be rejected? Xisco,
>> can you please clarify how you created that file? Should the parsing
>> code in chart2/source/tools/XMLRangeHelper.cxx be less lenient and
>> reject that "PivotChart" value (or is that parsing code also used in
>> situations that ask for parsing another grammar)?
>
> _______________________________________________
> LibreOffice mailing list
> LibreOffice at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libreoffice
More information about the LibreOffice
mailing list