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-- |
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) |