sc/source/filter/excel/xelink.cxx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
New commits: commit e1c468014d50903f7bcd3da8c26593230ddbf901 Author: Karthik Godha <[email protected]> AuthorDate: Sun Feb 1 16:55:56 2026 +0530 Commit: Karthik Godha <[email protected]> CommitDate: Fri Feb 27 10:57:39 2026 +0100 XLSX: Handle invalid SheetName in ExternalLink bug-document: forum-mso-de-79957.xls Change-Id: I62aee260a64bcf512bf92f985bdbe796796b52a7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198511 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> (cherry picked from commit 7f7ac179e8f5194a1e8da34737a21ea1fbe65409) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200489 Tested-by: Jenkins Reviewed-by: Karthik Godha <[email protected]> diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx index f0f8c22e4e05..e47ab65f4c9e 100644 --- a/sc/source/filter/excel/xelink.cxx +++ b/sc/source/filter/excel/xelink.cxx @@ -1688,8 +1688,12 @@ void XclExpSupbook::SaveXml( XclExpXmlStream& rStrm ) pExternalLink->startElement(XML_sheetNames); for (size_t nPos = 0, nSize = maXctList.GetSize(); nPos < nSize; ++nPos) { - pExternalLink->singleElement(XML_sheetName, - XML_val, XclXmlUtils::ToOString(maXctList.GetRecord(nPos)->GetTabName())); + OString sSheetName = XclXmlUtils::ToOString(maXctList.GetRecord(nPos)->GetTabName()); + // Sometimes `ReadUniString` could result in a garbage string + // Guess whether the SheetName is valid by checking if it contains '?' + if (sSheetName.indexOf("?") != -1) + sSheetName = "Invalid_Sheet_Name_" + OString::number(sSheetName.getLength()); + pExternalLink->singleElement(XML_sheetName, XML_val, sSheetName); } pExternalLink->endElement( XML_sheetNames);
