[Libreoffice-commits] core.git: sax/source sd/source xmloff/source

Michael Stahl mstahl at redhat.com
Fri Mar 2 08:52:24 UTC 2018


 sax/source/tools/fastattribs.cxx           |    1 +
 sd/source/filter/xml/sdtransform.cxx       |   13 ++++++++++++-
 xmloff/source/core/SvXMLAttrCollection.cxx |   12 ++++++++++++
 3 files changed, 25 insertions(+), 1 deletion(-)

New commits:
commit 1bd9fcafe67cac9404c8c96553a262c048802c25
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Feb 28 21:28:55 2018 +0100

    tdf#115429 sax,xmloff: assert on empty attribute names & namespaces
    
    Surely that's indication of a bug somewhere.
    
    Change-Id: Ic6219d8eb7f22301d8c4da98b2132ae3ef0467b5
    Reviewed-on: https://gerrit.libreoffice.org/50579
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/sax/source/tools/fastattribs.cxx b/sax/source/tools/fastattribs.cxx
index fa91125b2245..a9f0baf7a2c0 100644
--- a/sax/source/tools/fastattribs.cxx
+++ b/sax/source/tools/fastattribs.cxx
@@ -80,6 +80,7 @@ void FastAttributeList::clear()
 
 void FastAttributeList::add( sal_Int32 nToken, const sal_Char* pValue, size_t nValueLength )
 {
+    assert(nToken != -1);
     maAttributeTokens.push_back( nToken );
     sal_Int32 nWritePosition = maAttributeValues.back();
     maAttributeValues.push_back( maAttributeValues.back() + nValueLength + 1 );
diff --git a/sd/source/filter/xml/sdtransform.cxx b/sd/source/filter/xml/sdtransform.cxx
index c2ce55e066cd..e7d1ca8cc7a1 100644
--- a/sd/source/filter/xml/sdtransform.cxx
+++ b/sd/source/filter/xml/sdtransform.cxx
@@ -341,7 +341,18 @@ bool SdTransformOOo2xDocument::removeAlienAttributes( SfxItemSet& rSet, sal_uInt
                     for( nItem = 0; nItem < nCount; nItem++ )
                     {
                         if( nItem != nFound )
-                            aNewItem.AddAttr( rAttr.GetAttrPrefix(nItem),rAttr.GetAttrNamespace(nItem), rAttr.GetAttrLName(nItem), rAttr.GetAttrValue(nItem ) );
+                        {
+                            OUString const& rNamespace(rAttr.GetAttrNamespace(nItem));
+                            OUString const& rPrefix(rAttr.GetAttrPrefix(nItem));
+                            if (rPrefix.isEmpty())
+                            {
+                                aNewItem.AddAttr(rAttr.GetAttrLName(nItem), rAttr.GetAttrValue(nItem));
+                            }
+                            else
+                            {
+                                aNewItem.AddAttr(rPrefix, rNamespace, rAttr.GetAttrLName(nItem), rAttr.GetAttrValue(nItem));
+                            }
+                        }
                     }
 
                     rSet.Put( aNewItem );
diff --git a/xmloff/source/core/SvXMLAttrCollection.cxx b/xmloff/source/core/SvXMLAttrCollection.cxx
index e203e3c9f920..fcb9a5b0dd9a 100644
--- a/xmloff/source/core/SvXMLAttrCollection.cxx
+++ b/xmloff/source/core/SvXMLAttrCollection.cxx
@@ -20,6 +20,7 @@ bool SvXMLAttrCollection::operator ==( const SvXMLAttrCollection& rCmp ) const
 bool SvXMLAttrCollection::AddAttr( const OUString& rLName,
                                        const OUString& rValue )
 {
+    assert(!rLName.isEmpty());
     aAttrs.emplace_back(rLName, rValue );
     return true;
 }
@@ -29,6 +30,9 @@ bool SvXMLAttrCollection::AddAttr( const OUString& rPrefix,
                                        const OUString& rLName,
                                        const OUString& rValue )
 {
+    assert(!rPrefix.isEmpty());
+    assert(!rNamespace.isEmpty());
+    assert(!rLName.isEmpty());
     sal_uInt16 nPos = aNamespaceMap.Add( rPrefix, rNamespace );
     aAttrs.emplace_back(nPos, rLName, rValue );
     return true;
@@ -38,6 +42,8 @@ bool SvXMLAttrCollection::AddAttr( const OUString& rPrefix,
                                        const OUString& rLName,
                                        const OUString& rValue )
 {
+    assert(!rPrefix.isEmpty());
+    assert(!rLName.isEmpty());
     sal_uInt16 nPos = aNamespaceMap.GetIndexByPrefix( rPrefix );
     if( USHRT_MAX == nPos )
         return false;
@@ -49,6 +55,7 @@ bool SvXMLAttrCollection::SetAt( size_t i,
                                      const OUString& rLName,
                                      const OUString& rValue )
 {
+    assert(!rLName.isEmpty());
     if( i >= GetAttrCount() )
         return false;
     aAttrs[i] = SvXMLAttr(rLName, rValue);
@@ -61,6 +68,9 @@ bool SvXMLAttrCollection::SetAt( size_t i,
                                      const OUString& rLName,
                                      const OUString& rValue )
 {
+    assert(!rPrefix.isEmpty());
+    assert(!rNamespace.isEmpty());
+    assert(!rLName.isEmpty());
     if( i >= GetAttrCount() )
         return false;
 
@@ -77,6 +87,8 @@ bool SvXMLAttrCollection::SetAt( size_t i,
                                      const OUString& rLName,
                                      const OUString& rValue )
 {
+    assert(!rPrefix.isEmpty());
+    assert(!rLName.isEmpty());
     if( i >= GetAttrCount() )
         return false;
 


More information about the Libreoffice-commits mailing list