bpo-45829: Check __getitem__'s version for overflow before specializing (GH-30129)

* Check __getitem__'s version for overflow.

* Use SPEC_FAIL_OUT_OF_VERSIONS instead
This commit is contained in:
Brandt Bucher 2021-12-16 03:08:20 -08:00 committed by GitHub
parent c5d18a5014
commit 62a8a0c522
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1187,7 +1187,7 @@ _Py_Specialize_BinarySubscr(
assert(cls->tp_version_tag != 0);
cache0->version = cls->tp_version_tag;
int version = _PyFunction_GetVersionForCurrentState(func);
if (version == 0) {
if (version == 0 || version != (uint16_t)version) {
SPECIALIZATION_FAIL(BINARY_SUBSCR, SPEC_FAIL_OUT_OF_VERSIONS);
goto fail;
}