fdo#79591 Values for docPr name and shape ID attributes were set invalid

Values set for docPr name and shape ID attributes in RT file were not valid
as per UTF-8 encoding format and hence was showing RT document as corrupt with
error message "invalid character".

Calling add() function with current parameters is causing issue and
setting invalid values so modified the second parameter which will
set valid values to the specified parameters.

Reviewed on:
	https://gerrit.libreoffice.org/9746

Change-Id: I3b48e53adbe5ed844235e596bb98eb396133845a
This commit is contained in:
Dinesh Patil
2014-06-12 11:34:32 +05:30
committed by Miklos Vajna
parent 67f64c266c
commit 7ea1bbe712
4 changed files with 17 additions and 2 deletions

View File

@@ -821,7 +821,7 @@ void VMLExport::Commit( EscherPropertyContainer& rProps, const Rectangle& rRect
OUString idStr = SvxMSDffManager::MSDFFReadZString(aStream, it->nPropSize, true); OUString idStr = SvxMSDffManager::MSDFFReadZString(aStream, it->nPropSize, true);
aStream.Seek(0); aStream.Seek(0);
if (!IsWaterMarkShape(m_pSdrObject->GetName())) if (!IsWaterMarkShape(m_pSdrObject->GetName()))
m_pShapeAttrList->add(XML_ID, OUStringToOString(idStr, RTL_TEXTENCODING_UTF8)); m_pShapeAttrList->add(XML_ID, OUStringToOString(idStr, RTL_TEXTENCODING_UTF8).getStr());
bAlreadyWritten[ESCHER_Prop_wzName] = true; bAlreadyWritten[ESCHER_Prop_wzName] = true;
} }

Binary file not shown.

View File

@@ -1811,6 +1811,21 @@ DECLARE_OOXMLEXPORT_TEST(testTextboxRoundedCorners, "textbox-rounded-corners.doc
CPPUNIT_ASSERT_EQUAL(OUString("a"), xCell->getString()); CPPUNIT_ASSERT_EQUAL(OUString("a"), xCell->getString());
} }
DECLARE_OOXMLEXPORT_TEST(testfdo79591, "fdo79591.docx")
{
/* Values set for docPr name and shape ID attributes
* in RT file were not valid as per UTF-8 encoding format
* and hence was showing RT document as corrupt with error
* message "invalid character"
*/
xmlDocPtr pXmlDoc = parseExport("word/document.xml");
if (!pXmlDoc)
return;
assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:anchor/wp:docPr", "name", "");
assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Fallback/w:pict/v:shape", "ID", "");
}
#endif #endif
CPPUNIT_PLUGIN_IMPLEMENT(); CPPUNIT_PLUGIN_IMPLEMENT();

View File

@@ -724,7 +724,7 @@ void DocxSdrExport::writeDMLDrawing(const SdrObject* pSdrObject, const SwFrmFmt*
sax_fastparser::FastAttributeList* pDocPrAttrList = pFS->createAttrList(); sax_fastparser::FastAttributeList* pDocPrAttrList = pFS->createAttrList();
pDocPrAttrList->add(XML_id, OString::number(nAnchorId).getStr()); pDocPrAttrList->add(XML_id, OString::number(nAnchorId).getStr());
pDocPrAttrList->add(XML_name, OUStringToOString(pSdrObject->GetName(), RTL_TEXTENCODING_UTF8)); pDocPrAttrList->add(XML_name, OUStringToOString(pSdrObject->GetName(), RTL_TEXTENCODING_UTF8).getStr());
if (!pSdrObject->GetTitle().isEmpty()) if (!pSdrObject->GetTitle().isEmpty())
pDocPrAttrList->add(XML_title, OUStringToOString(pSdrObject->GetTitle(), RTL_TEXTENCODING_UTF8)); pDocPrAttrList->add(XML_title, OUStringToOString(pSdrObject->GetTitle(), RTL_TEXTENCODING_UTF8));
if (!pSdrObject->GetDescription().isEmpty()) if (!pSdrObject->GetDescription().isEmpty())