[Libreoffice-commits] core.git: Branch 'libreoffice-6-0' - package/source

Caolán McNamara caolanm at redhat.com
Sat Dec 2 17:43:40 UTC 2017


 package/source/zippackage/ZipPackage.cxx |   17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

New commits:
commit ac022ecc76337eb58c4a002775463c11bb0e8b86
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Dec 1 13:16:46 2017 +0000

    ofz#4491 Bad-Cast
    
    Change-Id: Ibee0c3e51ecd2b976d67c3ab28cabf0acb10c6b8
    Reviewed-on: https://gerrit.libreoffice.org/45660
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/package/source/zippackage/ZipPackage.cxx b/package/source/zippackage/ZipPackage.cxx
index 9bdd03d7cfd1..3823ed07ffb8 100644
--- a/package/source/zippackage/ZipPackage.cxx
+++ b/package/source/zippackage/ZipPackage.cxx
@@ -517,7 +517,12 @@ void ZipPackage::getZipFileContents()
                     pCurrent = pPkgFolder;
                 }
                 else
-                    pCurrent = pCurrent->doGetByName( sTemp ).pFolder;
+                {
+                    ZipContentInfo& rInfo = pCurrent->doGetByName(sTemp);
+                    if (!rInfo.bFolder)
+                        throw css::packages::zip::ZipIOException("Bad Zip File, stream as folder");
+                    pCurrent = rInfo.pFolder;
+                }
                 nOldIndex = nIndex+1;
             }
             if ( nStreamIndex != -1 && !sDirName.isEmpty() )
@@ -813,7 +818,10 @@ Any SAL_CALL ZipPackage::getByHierarchicalName( const OUString& aName )
             throw NoSuchElementException(THROW_WHERE );
 
         pPrevious = pCurrent;
-        pCurrent = pCurrent->doGetByName( sTemp ).pFolder;
+        ZipContentInfo& rInfo = pCurrent->doGetByName(sTemp);
+        if (!rInfo.bFolder)
+            throw css::packages::zip::ZipIOException("Bad Zip File, stream as folder");
+        pCurrent = rInfo.pFolder;
         nOldIndex = nIndex+1;
     }
 
@@ -893,7 +901,10 @@ sal_Bool SAL_CALL ZipPackage::hasByHierarchicalName( const OUString& aName )
             if ( pCurrent->hasByName( sTemp ) )
             {
                 pPrevious = pCurrent;
-                pCurrent = pCurrent->doGetByName( sTemp ).pFolder;
+                ZipContentInfo& rInfo = pCurrent->doGetByName(sTemp);
+                if (!rInfo.bFolder)
+                    throw css::packages::zip::ZipIOException("Bad Zip File, stream as folder");
+                pCurrent = rInfo.pFolder;
             }
             else
                 return false;


More information about the Libreoffice-commits mailing list