]>
Commit | Line | Data |
---|---|---|
2247840c JB |
1 | From 0e1a49c8907645d2e155f0d89d4d9895ac5112b5 Mon Sep 17 00:00:00 2001 |
2 | From: Zhipeng Xie <xiezhipeng1@huawei.com> | |
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 <xiezhipeng1@huawei.com> | |
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 d1c31963..a34bb6cd 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.24.1 | |
32 |