From 4df1c80c4edc51ecb9f2f574203128a06fd31406 Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Sat, 21 Jun 2025 12:11:30 -0400 Subject: [PATCH] Schematron: Fix null pointer dereference leading to DoS (CVE-2025-49795) Fixes #932 Upstream: https://gitlab.gnome.org/GNOME/libxml2/-/commit/499bcb78ab389f60c2fd634ce410d4bb85c18765 CVE: CVE-2025-49795 Signed-off-by: Tim Soubry --- result/schematron/zvon16_0.err | 1 + schematron.c | 2 ++ test/schematron/zvon16.sct | 7 +++++++ test/schematron/zvon16_0.xml | 5 +++++ 4 files changed, 15 insertions(+) create mode 100644 result/schematron/zvon16_0.err create mode 100644 test/schematron/zvon16.sct create mode 100644 test/schematron/zvon16_0.xml diff --git a/result/schematron/zvon16_0.err b/result/schematron/zvon16_0.err new file mode 100644 index 00000000..465cf2eb --- /dev/null +++ b/result/schematron/zvon16_0.err @@ -0,0 +1 @@ +xmlSchematronParse: could not load './test/schematron/zvon16.sct' \ No newline at end of file diff --git a/schematron.c b/schematron.c index 426300c8..b51b20e1 100644 --- a/schematron.c +++ b/schematron.c @@ -1509,6 +1509,8 @@ xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt, select = xmlGetNoNsProp(child, BAD_CAST "select"); comp = xmlXPathCtxtCompile(ctxt->xctxt, select); eval = xmlXPathCompiledEval(comp, ctxt->xctxt); + if (eval == NULL) + return ret; switch (eval->type) { case XPATH_NODESET: { diff --git a/test/schematron/zvon16.sct b/test/schematron/zvon16.sct new file mode 100644 index 00000000..4d24c054 --- /dev/null +++ b/test/schematron/zvon16.sct @@ -0,0 +1,7 @@ + + + Book test + + + diff --git a/test/schematron/zvon16_0.xml b/test/schematron/zvon16_0.xml new file mode 100644 index 00000000..551e2d65 --- /dev/null +++ b/test/schematron/zvon16_0.xml @@ -0,0 +1,5 @@ + + + Test Author + + -- 2.39.5