From 21004b32e0345187e4703275485408f1f569c58a Mon Sep 17 00:00:00 2001 From: Jonathan Marler Date: Mon, 14 Jul 2025 14:53:28 -0600 Subject: [PATCH] gh-136660: fix UB in dictobject memcpy when there are 0 entries --- Objects/dictobject.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Objects/dictobject.c b/Objects/dictobject.c index be62ae5eefd00d..ce189d6ae37188 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -2095,7 +2095,10 @@ dictresize(PyInterpreterState *interp, PyDictObject *mp, 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)); + /* avoid memcpy on 0 entries to avoid UB on oldentries */ + if (numentries > 0) { + memcpy(newentries, oldentries, numentries * sizeof(PyDictUnicodeEntry)); + } } else { PyDictUnicodeEntry *ep = oldentries;