]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-98740: Fix validation of conditional expressions in RE (GH-98764)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 3 Nov 2022 07:47:39 +0000 (00:47 -0700)
committerGitHub <noreply@github.com>
Thu, 3 Nov 2022 07:47:39 +0000 (00:47 -0700)
commiteb023a84d92661bcde9dfe1641576774710f6c64
tree4fcd7f3a5c2b43523d1c7943be35cf5aade190fd
parenta02979fa48103a84f635ce06bd01d5437c39f60c
gh-98740: Fix validation of conditional expressions in RE (GH-98764)

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/sre.c