40 lines
1.4 KiB
Diff
40 lines
1.4 KiB
Diff
From bc7fb8964ca3a422f472189b0eff751c1cc377b0 Mon Sep 17 00:00:00 2001
|
|
From: zherczeg <zherczeg@6239d852-aaf2-0410-a92c-79f79f948069>
|
|
Date: Mon, 9 Sep 2019 07:12:00 +0000
|
|
Subject: [PATCH] Add underflow check in JIT.
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1167 6239d852-aaf2-0410-a92c-79f79f948069
|
|
Petr Písař: Ported to 10.33.
|
|
---
|
|
src/pcre2_jit_compile.c | 8 ++++++--
|
|
|
|
diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c
|
|
index 8cbd8f9..79a27fd 100644
|
|
--- a/src/pcre2_jit_compile.c
|
|
+++ b/src/pcre2_jit_compile.c
|
|
@@ -5793,12 +5793,16 @@ if (common->match_end_ptr != 0)
|
|
{
|
|
OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_SP), common->match_end_ptr);
|
|
OP1(SLJIT_MOV, TMP3, 0, STR_END, 0);
|
|
- OP2(SLJIT_SUB, STR_END, 0, STR_END, 0, SLJIT_IMM, IN_UCHARS(max));
|
|
+ OP2(SLJIT_SUB | SLJIT_SET_LESS, STR_END, 0, STR_END, 0, SLJIT_IMM, IN_UCHARS(max));
|
|
+ add_jump(compiler, &common->failed_match, JUMP(SLJIT_LESS));
|
|
OP2(SLJIT_SUB | SLJIT_SET_GREATER, SLJIT_UNUSED, 0, STR_END, 0, TMP1, 0);
|
|
CMOV(SLJIT_GREATER, STR_END, TMP1, 0);
|
|
}
|
|
else
|
|
- OP2(SLJIT_SUB, STR_END, 0, STR_END, 0, SLJIT_IMM, IN_UCHARS(max));
|
|
+ {
|
|
+ OP2(SLJIT_SUB | SLJIT_SET_LESS, STR_END, 0, STR_END, 0, SLJIT_IMM, IN_UCHARS(max));
|
|
+ add_jump(compiler, &common->failed_match, JUMP(SLJIT_LESS));
|
|
+ }
|
|
|
|
SLJIT_ASSERT(range_right >= 0);
|
|
|
|
--
|
|
2.21.0
|
|
|