Skip to content

Commit 2cdb68e

Browse files
committed
backport libxml2 patch for CVE-2020-7595
related to #1992
1 parent e6b3229 commit 2cdb68e

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
From 0e1a49c8907645d2e155f0d89d4d9895ac5112b5 Mon Sep 17 00:00:00 2001
2+
From: Zhipeng Xie <[email protected]>
3+
Date: Thu, 12 Dec 2019 17:30:55 +0800
4+
Subject: [PATCH] Fix infinite loop in xmlStringLenDecodeEntities
5+
6+
When ctxt->instate == XML_PARSER_EOF,xmlParseStringEntityRef
7+
return NULL which cause a infinite loop in xmlStringLenDecodeEntities
8+
9+
Found with libFuzzer.
10+
11+
Signed-off-by: Zhipeng Xie <[email protected]>
12+
---
13+
parser.c | 3 ++-
14+
1 file changed, 2 insertions(+), 1 deletion(-)
15+
16+
diff --git a/parser.c b/parser.c
17+
index d1c3196..a34bb6c 100644
18+
--- a/parser.c
19+
+++ b/parser.c
20+
@@ -2646,7 +2646,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
21+
else
22+
c = 0;
23+
while ((c != 0) && (c != end) && /* non input consuming loop */
24+
- (c != end2) && (c != end3)) {
25+
+ (c != end2) && (c != end3) &&
26+
+ (ctxt->instate != XML_PARSER_EOF)) {
27+
28+
if (c == 0) break;
29+
if ((c == '&') && (str[1] == '#')) {
30+
--
31+
2.17.1
32+

0 commit comments

Comments
 (0)