# HG changeset patch # User Danek Duvall # Date 1464718967 25200 # Node ID 10e69396d7534408a980cf5e5c46607561f4c0a5 # Parent 9a454a2f1c354948df962bb1a71077e36d39677f 23313908 problem in UTILITY/P7ZIP 23313942 problem in UTILITY/P7ZIP diff -r 9a454a2f1c35 -r 10e69396d753 components/p7zip/patches/CVE-2016-2334.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/p7zip/patches/CVE-2016-2334.patch Tue May 31 11:22:47 2016 -0700 @@ -0,0 +1,30 @@ +This patch was pulled from the p7zip forums at: + +https://sourceforge.net/p/p7zip/discussion/383043/thread/9d0fb86b/1dba/attachment/CVE-2016-2334.patch + +This should be part of p7zip 16, once it ships. + +Index: p7zip_15.14.1/CPP/7zip/Archive/HfsHandler.cpp +=================================================================== +--- p7zip_15.14.1.orig/CPP/7zip/Archive/HfsHandler.cpp ++++ p7zip_15.14.1/CPP/7zip/Archive/HfsHandler.cpp +@@ -987,7 +987,9 @@ HRESULT CDatabase::LoadCatalog(const CFo + item.GroupID = Get32(r + 0x24); + item.AdminFlags = r[0x28]; + item.OwnerFlags = r[0x29]; ++ */ + item.FileMode = Get16(r + 0x2A); ++ /* + item.special.iNodeNum = Get16(r + 0x2C); // or .linkCount + item.FileType = Get32(r + 0x30); + item.FileCreator = Get32(r + 0x34); +@@ -1572,6 +1574,9 @@ HRESULT CHandler::ExtractZlibFile( + + UInt32 size = GetUi32(tableBuf + i * 8 + 4); + ++ if (size > buf.Size() || size > kCompressionBlockSize + 1) ++ return S_FALSE; ++ + RINOK(ReadStream_FALSE(inStream, buf, size)); + + if ((buf[0] & 0xF) == 0xF) diff -r 9a454a2f1c35 -r 10e69396d753 components/p7zip/patches/CVE-2016-2335.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/p7zip/patches/CVE-2016-2335.patch Tue May 31 11:22:47 2016 -0700 @@ -0,0 +1,23 @@ +This patch was pulled from the p7zip forums at: + +https://sourceforge.net/p/p7zip/discussion/383043/thread/9d0fb86b/1dba/attachment/CVE-2016-2335.patch + +This should be part of p7zip 16, once it ships. + +Index: p7zip_15.14.1/CPP/7zip/Archive/Udf/UdfIn.cpp +=================================================================== +--- p7zip_15.14.1.orig/CPP/7zip/Archive/Udf/UdfIn.cpp ++++ p7zip_15.14.1/CPP/7zip/Archive/Udf/UdfIn.cpp +@@ -389,7 +389,11 @@ HRESULT CInArchive::ReadFileItem(int vol + return S_FALSE; + CFile &file = Files.Back(); + const CLogVol &vol = LogVols[volIndex]; +- CPartition &partition = Partitions[vol.PartitionMaps[lad.Location.PartitionRef].PartitionIndex]; ++ unsigned partitionRef = lad.Location.PartitionRef; ++ ++ if (partitionRef >= vol.PartitionMaps.Size()) ++ return S_FALSE; ++ CPartition &partition = Partitions[vol.PartitionMaps[partitionRef].PartitionIndex]; + + UInt32 key = lad.Location.Pos; + UInt32 value;