]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-111178: fix UBSan failures in `Modules/unicodedata.c` (GH-129801)
authorBénédikt Tran <10796600+picnixz@users.noreply.github.com>
Tue, 25 Feb 2025 12:13:47 +0000 (13:13 +0100)
committerGitHub <noreply@github.com>
Tue, 25 Feb 2025 12:13:47 +0000 (13:13 +0100)
fix UBSan failures for `PreviousDBVersion`

Modules/unicodedata.c

index 79be7674fc8ab5ddc2cedbdd077b9da0df033819..f1ff7bd3eba232d4ebe481e3130cc14517f1a1d0 100644 (file)
@@ -77,9 +77,11 @@ typedef struct previous_version {
     Py_UCS4 (*normalization)(Py_UCS4);
 } PreviousDBVersion;
 
+#define PreviousDBVersion_CAST(op)  ((PreviousDBVersion *)(op))
+
 #include "clinic/unicodedata.c.h"
 
-#define get_old_record(self, v)    ((((PreviousDBVersion*)self)->getrecord)(v))
+#define get_old_record(self, v)    (PreviousDBVersion_CAST(self)->getrecord(v))
 
 static PyMemberDef DB_members[] = {
         {"unidata_version", Py_T_STRING, offsetof(PreviousDBVersion, name), Py_READONLY},
@@ -1591,14 +1593,14 @@ static PyMethodDef unicodedata_functions[] = {
 };
 
 static int
-ucd_traverse(PreviousDBVersion *self, visitproc visit, void *arg)
+ucd_traverse(PyObject *self, visitproc visit, void *arg)
 {
     Py_VISIT(Py_TYPE(self));
     return 0;
 }
 
 static void
-ucd_dealloc(PreviousDBVersion *self)
+ucd_dealloc(PyObject *self)
 {
     PyTypeObject *tp = Py_TYPE(self);
     PyObject_GC_UnTrack(self);