summaryrefslogtreecommitdiff
path: root/package
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-12-01 13:16:46 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-12-02 18:42:50 +0100
commitac022ecc76337eb58c4a002775463c11bb0e8b86 (patch)
tree7806c1063e2eef1939bd2d42da5029513e7a8934 /package
parentd1ae11a43d72e24bab9009d35db3d1a8b622d29e (diff)
ofz#4491 Bad-Cast
Change-Id: Ibee0c3e51ecd2b976d67c3ab28cabf0acb10c6b8 Reviewed-on: https://gerrit.libreoffice.org/45660 Reviewed-by: Michael Stahl <mstahl@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'package')
-rw-r--r--package/source/zippackage/ZipPackage.cxx17
1 files changed, 14 insertions, 3 deletions
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;