Fix CVE-2018-8036, CVE-2018-11797

This commit is contained in:
zhanghua1831 2020-09-19 19:20:23 +08:00
parent 3d8dc70d57
commit 81e2113070
3 changed files with 103 additions and 8 deletions

50
CVE-2018-11797.patch Normal file
View File

@ -0,0 +1,50 @@
From 1c5220a55e0df63c122ad172debd86763512f09d Mon Sep 17 00:00:00 2001
Subject: [PATCH] Fix CVE-2018-12123
---
.../java/org/apache/pdfbox/pdfparser/COSParser.java | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java b/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
index 524f2f5..751f4f1 100644
--- a/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
+++ b/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
@@ -2239,12 +2239,12 @@ public class COSParser extends BaseParser
COSBase pages = root.getDictionaryObject(COSName.PAGES);
if (pages instanceof COSDictionary)
{
- checkPagesDictionary((COSDictionary) pages);
+ checkPagesDictionary((COSDictionary) pages, new HashSet<COSObject>());
}
}
}
- private int checkPagesDictionary(COSDictionary pagesDict)
+ private int checkPagesDictionary(COSDictionary pagesDict, Set<COSObject> set)
{
// check for kids
COSBase kids = pagesDict.getDictionaryObject(COSName.KIDS);
@@ -2256,6 +2256,11 @@ public class COSParser extends BaseParser
for (COSBase kid : kidsList)
{
COSObject kidObject = (COSObject) kid;
+ if (set.contains(kidObject))
+ {
+ kidsArray.remove(kid);
+ continue;
+ }
COSBase kidBaseobject = kidObject.getObject();
// object wasn't dereferenced -> remove it
if (kidBaseobject.equals(COSNull.NULL))
@@ -2270,7 +2275,8 @@ public class COSParser extends BaseParser
if (COSName.PAGES.equals(type))
{
// process nested pages dictionaries
- numberOfPages += checkPagesDictionary(kidDictionary);
+ set.add(kidObject);
+ numberOfPages += checkPagesDictionary(kidDictionary, set);
}
else if (COSName.PAGE.equals(type))
{
--
2.23.0

41
CVE-2018-8036.patch Normal file
View File

@ -0,0 +1,41 @@
From 96708d737a9eaa5f950ca9aead18bf93a728d754 Mon Sep 17 00:00:00 2001
Subject: [PATCH] Fix CVE-2018-8036
---
.../main/java/org/apache/fontbox/afm/AFMParser.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java b/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java
index 2ac3dbe..320df7b 100644
--- a/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java
+++ b/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java
@@ -951,9 +951,11 @@ public class AFMParser
buf.append( (char)nextByte );
//now read the data
- while( !isEOL(nextByte = input.read()) )
+ nextByte = input.read();
+ while (nextByte != -1 && !isEOL(nextByte))
{
- buf.append( (char)nextByte );
+ buf.append((char)nextByte);
+ nextByte = input.read();
}
return buf.toString();
}
@@ -978,9 +980,11 @@ public class AFMParser
buf.append( (char)nextByte );
//now read the data
- while( !isWhitespace(nextByte = input.read()) )
+ nextByte = input.read();
+ while(nextByte != -1 && !isWhitespace(nextByte))
{
- buf.append( (char)nextByte );
+ buf.append((char)nextByte);
+ nextByte = input.read();
}
return buf.toString();
}
--
2.23.0

View File

@ -1,16 +1,17 @@
Name: pdfbox Name: pdfbox
Version: 2.0.9 Version: 2.0.9
Release: 6 Release: 7
Summary: A Java PDF Library Summary: A Java PDF Library
License: ASL 2.0 License: ASL 2.0
URL: http://pdfbox.apache.org/ URL: http://pdfbox.apache.org/
Source0: http://archive.apache.org/dist/pdfbox/%{version}/pdfbox-%{version}-src.zip Source0: http://archive.apache.org/dist/pdfbox/%{version}/pdfbox-%{version}-src.zip
Patch6000: CVE-2018-8036.patch
BuildRequires: maven-local mvn(commons-io:commons-io) Patch6001: CVE-2018-11797.patch
BuildRequires: mvn(commons-logging:commons-logging) mvn(junit:junit) BuildRequires: maven-local mvn(commons-io:commons-io)
BuildRequires: mvn(log4j:log4j:1.2.17) mvn(org.apache.ant:ant) mvn(org.apache:apache:pom:) BuildRequires: mvn(commons-logging:commons-logging) mvn(junit:junit)
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) mvn(org.bouncycastle:bcmail-jdk15on) BuildRequires: mvn(log4j:log4j:1.2.17) mvn(org.apache.ant:ant) mvn(org.apache:apache:pom:)
BuildRequires: mvn(org.bouncycastle:bcprov-jdk15on) dejavu-sans-mono-fonts google-noto-emoji-fonts BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) mvn(org.bouncycastle:bcmail-jdk15on)
BuildRequires: mvn(org.bouncycastle:bcprov-jdk15on) dejavu-sans-mono-fonts google-noto-emoji-fonts
BuildRequires: liberation-sans-fonts icc-profiles-openicc fontconfig BuildRequires: liberation-sans-fonts icc-profiles-openicc fontconfig
Requires: liberation-sans-fonts Requires: liberation-sans-fonts
@ -77,7 +78,7 @@ XMP(TM) specification. It can be used to parse, validate and create xmp
contents. It is mainly used by subproject preflight of Apache PDFBox. contents. It is mainly used by subproject preflight of Apache PDFBox.
%prep %prep
%setup -q %autosetup -p1
%pom_disable_module preflight-app %pom_disable_module preflight-app
@ -149,5 +150,8 @@ sed -i -e 's/TestTextStripper/BidiTest/' pdfbox/src/test/java/org/apache/pdfbox/
%license LICENSE.txt NOTICE.txt %license LICENSE.txt NOTICE.txt
%changelog %changelog
* Sat Sep 19 2020 zhanghua <zhanghua40@huawei.com> - 2.0.9-7
- Fix CVE-2018-8036, CVE-2018-11797
* Fri Feb 28 2020 Senlin Xia <xiasenlin1@huawei.com> - 2.0.9-6 * Fri Feb 28 2020 Senlin Xia <xiasenlin1@huawei.com> - 2.0.9-6
- package init - package init