Files
odfstudio/external/python3/ubsan.patch.0
T
Xisco Fauli c80b6acef5 python3: upgrade to 3.13.16
Downloaded from https://www.python.org/ftp/python/3.13.16/Python-3.13.16.tar.xz

Change-Id: Ic86fd03f87d26a96f7eb4e350b3766ce0992cdbb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211649
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 15:43:29 +02:00

75 lines
2.9 KiB
Plaintext

--- Modules/posixmodule.c
+++ Modules/posixmodule.c
@@ -13998,6 +13998,9 @@
};
static int
+#if defined __clang__
+__attribute__((no_sanitize("shift-base"))) // MFD_HUGE_16GB in /usr/include/linux/memfd.h
+#endif
all_ins(PyObject *m)
{
#ifdef F_OK
--- Objects/dictobject.c
+++ Objects/dictobject.c
@@ -2105,7 +2105,7 @@
if (unicode) { // combined unicode -> combined unicode
PyDictUnicodeEntry *newentries = DK_UNICODE_ENTRIES(newkeys);
if (oldkeys->dk_nentries == numentries && mp->ma_keys->dk_kind == DICT_KEYS_UNICODE) {
- memcpy(newentries, oldentries, numentries * sizeof(PyDictUnicodeEntry));
+ memcpy(newentries, (void *) oldentries, numentries * sizeof(PyDictUnicodeEntry));
}
else {
PyDictUnicodeEntry *ep = oldentries;
--- Objects/listobject.c
+++ Objects/listobject.c
@@ -539,7 +539,7 @@
dest[i] = Py_NewRef(v);
}
src = b->ob_item;
- dest = np->ob_item + Py_SIZE(a);
+ dest = Py_SIZE(a) == 0 ? np->ob_item : np->ob_item + Py_SIZE(a);
for (i = 0; i < Py_SIZE(b); i++) {
PyObject *v = src[i];
dest[i] = Py_NewRef(v);
@@ -1325,7 +1325,7 @@
Py_ssize_t setpos = 0;
Py_hash_t hash;
PyObject *key;
- PyObject **dest = self->ob_item + m;
+ PyObject **dest = m == 0 ? self->ob_item : self->ob_item + m;
while (_PySet_NextEntryRef((PyObject *)other, &setpos, &key, &hash)) {
FT_ATOMIC_STORE_PTR_RELEASE(*dest, key);
dest++;
@@ -1344,7 +1344,7 @@
return -1;
}
- PyObject **dest = self->ob_item + m;
+ PyObject **dest = m == 0 ? self->ob_item : self->ob_item + m;
Py_ssize_t pos = 0;
PyObject *keyvalue[2];
while (_PyDict_Next((PyObject *)dict, &pos, &keyvalue[0], &keyvalue[1], NULL)) {
@@ -1367,7 +1367,7 @@
return -1;
}
- PyObject **dest = self->ob_item + m;
+ PyObject **dest = m == 0 ? self->ob_item : self->ob_item + m;
Py_ssize_t pos = 0;
Py_ssize_t i = 0;
PyObject *key, *value;
--- Parser/lexer/buffer.c
+++ Parser/lexer/buffer.c
@@ -29,8 +29,8 @@
for (index = tok->tok_mode_stack_index; index >= 0; --index) {
mode = &(tok->tok_mode_stack[index]);
- mode->f_string_start = mode->f_string_start_offset < 0 ? NULL : tok->buf + mode->f_string_start_offset;
- mode->f_string_multi_line_start = mode->f_string_multi_line_start_offset < 0 ? NULL : tok->buf + mode->f_string_multi_line_start_offset;
+ mode->f_string_start = mode->f_string_start_offset < 0 ? NULL : (char *) (((intptr_t) tok->buf) + mode->f_string_start_offset);
+ mode->f_string_multi_line_start = mode->f_string_multi_line_start_offset < 0 ? NULL : (char *) (((intptr_t) tok->buf) + mode->f_string_multi_line_start_offset);
mode->last_expr_start = mode->last_expr_start_offset < 0
? NULL : tok->buf + mode->last_expr_start_offset;
}