diff options
author | Olly Betts <olly@survex.com> | 2022-10-19 16:52:02 +1300 |
---|---|---|
committer | Olly Betts <olly@survex.com> | 2022-10-20 10:37:47 +1300 |
commit | f40658c2d04feeb3803cf0f3d34d915163b39b10 (patch) | |
tree | a0978a4198f540ba1aade30b7648fa4fee68c28d /Lib/python/pyrun.swg | |
parent | a5bc48afeac0b33631b7aeb544e6a23d99b54bf8 (diff) | |
download | swig-f40658c2d04feeb3803cf0f3d34d915163b39b10.tar.gz |
[python] Avoid undefined behaviour
Cast a parameter type explicitly rather than implicitly by casting
the function pointer type, as the latter is undefined behaviour.
Caught by ubsan.
Diffstat (limited to 'Lib/python/pyrun.swg')
-rw-r--r-- | Lib/python/pyrun.swg | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg index 9b6dd28ee..6b119be1c 100644 --- a/Lib/python/pyrun.swg +++ b/Lib/python/pyrun.swg @@ -240,7 +240,7 @@ typedef struct swig_varlinkobject { } swig_varlinkobject; SWIGINTERN PyObject * -swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { +swig_varlink_repr(PyObject *SWIGUNUSEDPARM(v)) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_InternFromString("<Swig global variables>"); #else @@ -249,7 +249,8 @@ swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { } SWIGINTERN PyObject * -swig_varlink_str(swig_varlinkobject *v) { +swig_varlink_str(PyObject *o) { + swig_varlinkobject *v = (swig_varlinkobject *) o; #if PY_VERSION_HEX >= 0x03000000 PyObject *str = PyUnicode_InternFromString("("); PyObject *tail; @@ -287,7 +288,8 @@ swig_varlink_str(swig_varlinkobject *v) { } SWIGINTERN void -swig_varlink_dealloc(swig_varlinkobject *v) { +swig_varlink_dealloc(PyObject *o) { + swig_varlinkobject *v = (swig_varlinkobject *) o; swig_globalvar *var = v->vars; while (var) { swig_globalvar *n = var->next; @@ -298,7 +300,8 @@ swig_varlink_dealloc(swig_varlinkobject *v) { } SWIGINTERN PyObject * -swig_varlink_getattr(swig_varlinkobject *v, char *n) { +swig_varlink_getattr(PyObject *o, char *n) { + swig_varlinkobject *v = (swig_varlinkobject *) o; PyObject *res = NULL; swig_globalvar *var = v->vars; while (var) { @@ -315,7 +318,8 @@ swig_varlink_getattr(swig_varlinkobject *v, char *n) { } SWIGINTERN int -swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { +swig_varlink_setattr(PyObject *o, char *n, PyObject *p) { + swig_varlinkobject *v = (swig_varlinkobject *) o; int res = 1; swig_globalvar *var = v->vars; while (var) { |