From c316f92599940a5e08f33361add407e1a402719c Mon Sep 17 00:00:00 2001 From: Yogita Urade Date: Tue, 19 Aug 2025 16:43:54 +0530 Subject: [PATCH] poppler: fix CVE-2025-50420 An issue in the pdfseparate utility of freedesktop poppler v25.04.0 allows attackers to cause an infinite recursion via supplying a crafted PDF file. This can lead to a Denial of Service (DoS). Reference: https://nvd.nist.gov/vuln/detail/CVE-2025-50420 Upstream patch: https://gitlab.freedesktop.org/poppler/poppler/-/commit/a7025904e3330dd6cf95f3664ef6fc77034cc5e1 Signed-off-by: Yogita Urade Signed-off-by: Anuj Mittal --- .../poppler/poppler/CVE-2025-50420.patch | 38 +++++++++++++++++++ .../poppler/poppler_23.04.0.bb | 1 + 2 files changed, 39 insertions(+) create mode 100644 meta-oe/recipes-support/poppler/poppler/CVE-2025-50420.patch diff --git a/meta-oe/recipes-support/poppler/poppler/CVE-2025-50420.patch b/meta-oe/recipes-support/poppler/poppler/CVE-2025-50420.patch new file mode 100644 index 0000000000..a6396eeba2 --- /dev/null +++ b/meta-oe/recipes-support/poppler/poppler/CVE-2025-50420.patch @@ -0,0 +1,38 @@ +From a7025904e3330dd6cf95f3664ef6fc77034cc5e1 Mon Sep 17 00:00:00 2001 +From: Sune Vuorela +Date: Tue, 29 Jul 2025 14:14:00 +0200 +Subject: [PATCH] Fix crash in pdfseparate + +Don't continue recursing in PDFDoc::mark* if things looks a bit weirder +than expected + +CVE: CVE-2025-50420 +Upstream-Status: Backport [https://gitlab.freedesktop.org/poppler/poppler/-/commit/a7025904e3330dd6cf95f3664ef6fc77034cc5e1] + +Signed-off-by: Yogita Urade +--- + poppler/PDFDoc.cc | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc +index 872841c..a7c2e24 100644 +--- a/poppler/PDFDoc.cc ++++ b/poppler/PDFDoc.cc +@@ -1818,6 +1818,15 @@ bool PDFDoc::markAnnotations(Object *annotsObj, XRef *xRef, XRef *countRef, unsi + if (obj1.isDict()) { + Dict *dict = obj1.getDict(); + Object type = dict->lookup("Type"); ++ if (type.isNull()) { ++ Object subType = dict->lookup("SubType"); ++ // Type is optional, subtype is required ++ // If neither of them exists, something is probably ++ // weird here, so let us just skip this entry ++ if (subType.isNull()) { ++ continue; ++ } ++ } + if (type.isName() && strcmp(type.getName(), "Annot") == 0) { + const Object &obj2 = dict->lookupNF("P"); + if (obj2.isRef()) { +-- +2.40.0 diff --git a/meta-oe/recipes-support/poppler/poppler_23.04.0.bb b/meta-oe/recipes-support/poppler/poppler_23.04.0.bb index 81574177e0..7a6666936e 100644 --- a/meta-oe/recipes-support/poppler/poppler_23.04.0.bb +++ b/meta-oe/recipes-support/poppler/poppler_23.04.0.bb @@ -18,6 +18,7 @@ SRC_URI = "http://poppler.freedesktop.org/${BP}.tar.xz \ file://CVE-2025-43903-0002.patch \ file://CVE-2025-52886-0001.patch \ file://CVE-2025-52886-0002.patch \ + file://CVE-2025-50420.patch \ " SRC_URI[sha256sum] = "b6d893dc7dcd4138b9e9df59a13c59695e50e80dc5c2cacee0674670693951a1"