1 |
ChangeLog for PCRE |
ChangeLog for PCRE |
2 |
------------------ |
------------------ |
3 |
|
|
4 |
|
Version 8.38 xx-xxx-xxxx |
5 |
|
------------------------ |
6 |
|
|
7 |
|
1. If a group that contained a recursive back reference also contained a |
8 |
|
forward reference subroutine call followed by a non-forward-reference |
9 |
|
subroutine call, for example /.((?2)(?R)\1)()/, pcre2_compile() failed to |
10 |
|
compile correct code, leading to undefined behaviour or an internally |
11 |
|
detected error. This bug was discovered by the LLVM fuzzer. |
12 |
|
|
13 |
|
2. Quantification of certain items (e.g. atomic back references) could cause |
14 |
|
incorrect code to be compiled when recursive forward references were |
15 |
|
involved. For example, in this pattern: /(?1)()((((((\1++))\x85)+)|))/. |
16 |
|
This bug was discovered by the LLVM fuzzer. |
17 |
|
|
18 |
|
3. A repeated conditional group whose condition was a reference by name caused |
19 |
|
a buffer overflow if there was more than one group with the given name. |
20 |
|
This bug was discovered by the LLVM fuzzer. |
21 |
|
|
22 |
|
4. A recursive back reference by name within a group that had the same name as |
23 |
|
another group caused a buffer overflow. For example: |
24 |
|
/(?J)(?'d'(?'d'\g{d}))/. This bug was discovered by the LLVM fuzzer. |
25 |
|
|
26 |
|
30. A forward reference by name to a group whose number is the same as the |
27 |
|
current group, for example in this pattern: /(?|(\k'Pm')|(?'Pm'))/, caused |
28 |
|
a buffer overflow at compile time. This bug was discovered by the LLVM |
29 |
|
fuzzer. |
30 |
|
|
31 |
|
|
32 |
Version 8.37 28-April-2015 |
Version 8.37 28-April-2015 |
33 |
-------------------------- |
-------------------------- |
34 |
|
|