From: Brandt Bucher Date: Thu, 9 Dec 2021 01:17:16 +0000 (-0800) Subject: bpo-45510: Check both types when specializing subtraction (GH-29995) X-Git-Tag: v3.11.0a4~252 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5de39f4b412ed5b0f3ed0140c83b2c1f8c707603;p=thirdparty%2FPython%2Fcpython.git bpo-45510: Check both types when specializing subtraction (GH-29995) --- diff --git a/Python/specialize.c b/Python/specialize.c index cdc535396fa7..512184500810 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -1490,6 +1490,10 @@ _Py_Specialize_BinaryOp(PyObject *lhs, PyObject *rhs, _Py_CODEUNIT *instr, break; case NB_SUBTRACT: case NB_INPLACE_SUBTRACT: + if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) { + SPECIALIZATION_FAIL(BINARY_OP, SPEC_FAIL_DIFFERENT_TYPES); + goto failure; + } if (PyLong_CheckExact(lhs)) { *instr = _Py_MAKECODEUNIT(BINARY_OP_SUBTRACT_INT, _Py_OPARG(*instr));