mirror of
https://git.yoctoproject.org/poky
synced 2026-02-06 16:56:37 +01:00
It was discovered that libxml2, a library providing support to read, modify and write XML files, incorrectly performs entity substituton in the doctype prolog, even if the application using libxml2 disabled any entity substitution. A remote attacker could provide a specially-crafted XML file that, when processed, would lead to the exhaustion of CPU and memory resources or file descriptors. Reference: https://access.redhat.com/security/cve/CVE-2014-0191 (From OE-Core rev: 674bd59d5e357a4aba18c472ac21712a660a84af) Signed-off-by: Maxin B. John <maxin.john@enea.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
From: Daniel Veillard <veillard@redhat.com>
|
|
Date: Tue, 22 Apr 2014 15:30:56 +0800
|
|
Subject: Do not fetch external parameter entities
|
|
|
|
Unless explicitely asked for when validating or replacing entities
|
|
with their value. Problem pointed out by Daniel Berrange <berrange@redhat.com>
|
|
|
|
Upstream-Status: Backport
|
|
Reference: https://access.redhat.com/security/cve/CVE-2014-0191
|
|
|
|
Signed-off-by: Daniel Veillard <veillard@redhat.com>
|
|
Signed-off-by: Maxin B. John <maxin.john@enea.com>
|
|
---
|
|
diff -Naur libxml2-2.9.1-orig/parser.c libxml2-2.9.1/parser.c
|
|
--- libxml2-2.9.1-orig/parser.c 2013-04-16 15:39:18.000000000 +0200
|
|
+++ libxml2-2.9.1/parser.c 2014-05-07 13:35:46.883687946 +0200
|
|
@@ -2595,6 +2595,20 @@
|
|
xmlCharEncoding enc;
|
|
|
|
/*
|
|
+ * Note: external parsed entities will not be loaded, it is
|
|
+ * not required for a non-validating parser, unless the
|
|
+ * option of validating, or substituting entities were
|
|
+ * given. Doing so is far more secure as the parser will
|
|
+ * only process data coming from the document entity by
|
|
+ * default.
|
|
+ */
|
|
+ if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) &&
|
|
+ ((ctxt->options & XML_PARSE_NOENT) == 0) &&
|
|
+ ((ctxt->options & XML_PARSE_DTDVALID) == 0) &&
|
|
+ (ctxt->validate == 0))
|
|
+ return;
|
|
+
|
|
+ /*
|
|
* handle the extra spaces added before and after
|
|
* c.f. http://www.w3.org/TR/REC-xml#as-PE
|
|
* this is done independently.
|