-
-
Notifications
You must be signed in to change notification settings - Fork 905
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1786 from sparklemotion/1785-canonical-usns
pull in upstream libxml2 patches
- Loading branch information
Showing
4 changed files
with
111 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
54 changes: 54 additions & 0 deletions
54
patches/libxml2/0002-Fix-nullptr-deref-with-XPath-logic-ops.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
From a436374994c47b12d5de1b8b1d191a098fa23594 Mon Sep 17 00:00:00 2001 | ||
From: Nick Wellnhofer <wellnhofer@aevum.de> | ||
Date: Mon, 30 Jul 2018 12:54:38 +0200 | ||
Subject: [PATCH] Fix nullptr deref with XPath logic ops | ||
|
||
If the XPath stack is corrupted, for example by a misbehaving extension | ||
function, the "and" and "or" XPath operators could dereference NULL | ||
pointers. Check that the XPath stack isn't empty and optimize the | ||
logic operators slightly. | ||
|
||
Closes: https://gitlab.gnome.org/GNOME/libxml2/issues/5 | ||
|
||
Also see | ||
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901817 | ||
https://bugzilla.redhat.com/show_bug.cgi?id=1595985 | ||
|
||
This is CVE-2018-14404. | ||
|
||
Thanks to Guy Inbar for the report. | ||
--- | ||
xpath.c | 10 ++++------ | ||
1 file changed, 4 insertions(+), 6 deletions(-) | ||
|
||
diff --git a/xpath.c b/xpath.c | ||
index 3fae0bf..5e3bb9f 100644 | ||
--- a/xpath.c | ||
+++ b/xpath.c | ||
@@ -13234,9 +13234,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) | ||
return(0); | ||
} | ||
xmlXPathBooleanFunction(ctxt, 1); | ||
- arg1 = valuePop(ctxt); | ||
- arg1->boolval &= arg2->boolval; | ||
- valuePush(ctxt, arg1); | ||
+ if (ctxt->value != NULL) | ||
+ ctxt->value->boolval &= arg2->boolval; | ||
xmlXPathReleaseObject(ctxt->context, arg2); | ||
return (total); | ||
case XPATH_OP_OR: | ||
@@ -13252,9 +13251,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) | ||
return(0); | ||
} | ||
xmlXPathBooleanFunction(ctxt, 1); | ||
- arg1 = valuePop(ctxt); | ||
- arg1->boolval |= arg2->boolval; | ||
- valuePush(ctxt, arg1); | ||
+ if (ctxt->value != NULL) | ||
+ ctxt->value->boolval |= arg2->boolval; | ||
xmlXPathReleaseObject(ctxt->context, arg2); | ||
return (total); | ||
case XPATH_OP_EQUAL: | ||
-- | ||
2.17.1 | ||
|
50 changes: 50 additions & 0 deletions
50
patches/libxml2/0003-Fix-infinite-loop-in-LZMA-decompression.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
From 2240fbf5912054af025fb6e01e26375100275e74 Mon Sep 17 00:00:00 2001 | ||
From: Nick Wellnhofer <wellnhofer@aevum.de> | ||
Date: Mon, 30 Jul 2018 13:14:11 +0200 | ||
Subject: [PATCH] Fix infinite loop in LZMA decompression | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
Check the liblzma error code more thoroughly to avoid infinite loops. | ||
|
||
Closes: https://gitlab.gnome.org/GNOME/libxml2/issues/13 | ||
Closes: https://bugzilla.gnome.org/show_bug.cgi?id=794914 | ||
|
||
This is CVE-2018-9251 and CVE-2018-14567. | ||
|
||
Thanks to Dongliang Mu and Simon Wörner for the reports. | ||
--- | ||
xzlib.c | 9 +++++++++ | ||
1 file changed, 9 insertions(+) | ||
|
||
diff --git a/xzlib.c b/xzlib.c | ||
index a839169..0ba88cf 100644 | ||
--- a/xzlib.c | ||
+++ b/xzlib.c | ||
@@ -562,6 +562,10 @@ xz_decomp(xz_statep state) | ||
"internal error: inflate stream corrupt"); | ||
return -1; | ||
} | ||
+ /* | ||
+ * FIXME: Remapping a couple of error codes and falling through | ||
+ * to the LZMA error handling looks fragile. | ||
+ */ | ||
if (ret == Z_MEM_ERROR) | ||
ret = LZMA_MEM_ERROR; | ||
if (ret == Z_DATA_ERROR) | ||
@@ -587,6 +591,11 @@ xz_decomp(xz_statep state) | ||
xz_error(state, LZMA_PROG_ERROR, "compression error"); | ||
return -1; | ||
} | ||
+ if ((state->how != GZIP) && | ||
+ (ret != LZMA_OK) && (ret != LZMA_STREAM_END)) { | ||
+ xz_error(state, ret, "lzma error"); | ||
+ return -1; | ||
+ } | ||
} while (strm->avail_out && ret != LZMA_STREAM_END); | ||
|
||
/* update available output and crc check value */ | ||
-- | ||
2.17.1 | ||
|