[Bf-blender-cvs] [378f65f7d98] master: Fix Py-driver byte code access with Python 3.11
Campbell Barton
noreply at git.blender.org
Thu Jul 7 04:35:22 CEST 2022
Commit: 378f65f7d9843ea789a66623019163f935af141e
Author: Campbell Barton
Date: Thu Jul 7 12:30:40 2022 +1000
Branches: master
https://developer.blender.org/rB378f65f7d9843ea789a66623019163f935af141e
Fix Py-driver byte code access with Python 3.11
Error in [0] which assumed the struct member was renamed however
byte-code access from PyCodeObject now requires an API call.
Thanks to @music for pointing this out.
[0]: 780c0ea097444c3be60314dffd203c099720badb
===================================================================
M source/blender/python/intern/bpy_driver.c
===================================================================
diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c
index f71cf164e8c..07de5877d42 100644
--- a/source/blender/python/intern/bpy_driver.c
+++ b/source/blender/python/intern/bpy_driver.c
@@ -443,13 +443,19 @@ static bool bpy_driver_secure_bytecode_validate(PyObject *expr_code, PyObject *d
PyObject *co_code;
# if PY_VERSION_HEX >= 0x030b0000 /* Python 3.11 & newer. */
- co_code = py_code->_co_code;
+ co_code = PyCode_GetCode(py_code);
+ if (UNLIKELY(!co_code)) {
+ PyErr_Print();
+ PyErr_Clear();
+ return false;
+ }
# else
co_code = py_code->co_code;
# endif
PyBytes_AsStringAndSize(co_code, (char **)&codestr, &code_len);
code_len /= sizeof(*codestr);
+ bool ok = true;
for (Py_ssize_t i = 0; i < code_len; i++) {
const int opcode = _Py_OPCODE(codestr[i]);
@@ -458,11 +464,17 @@ static bool bpy_driver_secure_bytecode_validate(PyObject *expr_code, PyObject *d
"\tBPY_driver_eval() - restricted access disallows opcode '%d', "
"enable auto-execution to support\n",
opcode);
- return false;
+ ok = false;
+ break;
}
}
-# undef CODESIZE
+# if PY_VERSION_HEX >= 0x030b0000 /* Python 3.11 & newer. */
+ Py_DECREF(co_code);
+# endif
+ if (!ok) {
+ return false;
+ }
}
return true;
More information about the Bf-blender-cvs
mailing list