components/p7zip/patches/CVE-2016-2334.patch
author Enrico Perla <enrico.perla@oracle.com>
Fri, 04 Nov 2016 05:32:50 -0700
changeset 7245 934578b959f0
parent 6131 10e69396d753
permissions -rw-r--r--
20029192 Userland should build with ld -z sx=nx* flags instead of map.noexstk 23118364 Enable ADIHEAP on security sensitive binaries 23118359 Build openssh as PIE
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6131
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     1
This patch was pulled from the p7zip forums at:
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     2
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     3
https://sourceforge.net/p/p7zip/discussion/383043/thread/9d0fb86b/1dba/attachment/CVE-2016-2334.patch
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     4
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     5
This should be part of p7zip 16, once it ships.
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     6
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
Index: p7zip_15.14.1/CPP/7zip/Archive/HfsHandler.cpp
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
===================================================================
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
--- p7zip_15.14.1.orig/CPP/7zip/Archive/HfsHandler.cpp
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
+++ p7zip_15.14.1/CPP/7zip/Archive/HfsHandler.cpp
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
@@ -987,7 +987,9 @@ HRESULT CDatabase::LoadCatalog(const CFo
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    12
       item.GroupID = Get32(r + 0x24);
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
       item.AdminFlags = r[0x28];
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
       item.OwnerFlags = r[0x29];
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
+      */
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
       item.FileMode = Get16(r + 0x2A);
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
+      /*
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
       item.special.iNodeNum = Get16(r + 0x2C); // or .linkCount
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
       item.FileType = Get32(r + 0x30);
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
       item.FileCreator = Get32(r + 0x34);
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
@@ -1572,6 +1574,9 @@ HRESULT CHandler::ExtractZlibFile(
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
 
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
     UInt32 size = GetUi32(tableBuf + i * 8 + 4);
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
 
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
+    if (size > buf.Size() || size > kCompressionBlockSize + 1)
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
+        return S_FALSE;
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
+
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    28
     RINOK(ReadStream_FALSE(inStream, buf, size));
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    29
 
10e69396d753 23313908 problem in UTILITY/P7ZIP
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    30
     if ((buf[0] & 0xF) == 0xF)