https://bugs.exim.org/show_bug.cgi?id=2510

            Bug ID: 2510
           Summary: NULL-pointer deref on match of JIT-compiled regex
           Product: PCRE
           Version: 10.34 (PCRE2)
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Code
          Assignee: p...@hermes.cam.ac.uk
          Reporter: m...@forallsecure.com
                CC: pcre-dev@exim.org

Created attachment 1259
  --> https://bugs.exim.org/attachment.cgi?id=1259&action=edit
Reproducer source file

It appears that the some combination of the THEN verb "(*THEN:" and a lookahead
"?=" (or "?<=") causes a NULL-pointer dereference later when the emitted JIT
code is executed.  This bug was found with fuzzing, and I can't diagnose the
JIT code myself other than to say it's always the same instruction that
crashes: "cmp qword ptr [r15 + 8], rax" on x64.

I was able to minimize the crash to the following combination: pattern:
"(?=(*THEN: ))* |", string: " ", and have attached a reproducer source file.
Since it's a segfault in a JIT region the ASAN output and crash backtraces
aren't very useful. I can supply a dockerfile or other clarifying information
if needed, but there's nothing special about the build other than configuring
with --enable-jit.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to