]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.10] gh-98740: Fix validation of conditional expressions in RE (GH-98764) (GH-99046)
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 3 Nov 2022 10:18:50 +0000 (12:18 +0200)
committerGitHub <noreply@github.com>
Thu, 3 Nov 2022 10:18:50 +0000 (12:18 +0200)
commit22bbb0c4c7ba4cfddea3f4cec03f50be34479516
tree9f89a72ce2678923aedecdafc650908782a6d36e
parent27dc6dbafeb26ce2c5141121debd825f7666aa53
[3.10] gh-98740: Fix validation of conditional expressions in RE (GH-98764) (GH-99046)

In very rare circumstances the JUMP opcode could be confused with the
argument of the opcode in the "then" part which doesn't end with the
JUMP opcode. This led to incorrect detection of the final JUMP opcode
and incorrect calculation of the size of the subexpression.

NOTE: Changed return value of functions _validate_inner() and
_validate_charset() in Modules/_sre/sre.c.  Now they return 0 on success,
-1 on failure, and 1 if the last op is JUMP (which usually is a failure).
Previously they returned 1 on success and 0 on failure.
(cherry picked from commit e9ac890c0273aee413aa528cc202c3efa29f1d7a)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Doc/library/re.rst
Lib/test/test_re.py
Misc/NEWS.d/next/Library/2022-10-27-12-56-38.gh-issue-98740.ZoqqGM.rst [new file with mode: 0644]
Modules/_sre.c