diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2022-12-01 13:32:15 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-01 13:32:15 (GMT) |
commit | 64dae2efd5a083d342d744d40ca8d6ebb28bc771 (patch) | |
tree | cb4d7b116c54be3d7905e50c442d1fe84c584243 | |
parent | 807b103bddc4d466f3cfe78aed74c891617c9631 (diff) | |
download | cpython-64dae2efd5a083d342d744d40ca8d6ebb28bc771.zip cpython-64dae2efd5a083d342d744d40ca8d6ebb28bc771.tar.gz cpython-64dae2efd5a083d342d744d40ca8d6ebb28bc771.tar.bz2 |
gh-99845: _PyObject_DictPointer(): fix dictoffset cast (GH-99922)
Cast size_t to Py_ssize_t, rather than casting it to long. On 64-bit
Windows, long is 32-bit whereas Py_ssize_t is 64-bit.
(cherry picked from commit 9707bf228e008485a3fbb63aa7ee28cf88014f91)
Co-authored-by: Victor Stinner <vstinner@python.org>
-rw-r--r-- | Objects/object.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Objects/object.c b/Objects/object.c index 6d80d6d..0bef2e9 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1091,8 +1091,9 @@ _PyObject_GetDictPtr(PyObject *obj) tsize = -tsize; } size_t size = _PyObject_VAR_SIZE(tp, tsize); + assert(size <= (size_t)PY_SSIZE_T_MAX); + dictoffset += (Py_ssize_t)size; - dictoffset += (long)size; _PyObject_ASSERT(obj, dictoffset > 0); _PyObject_ASSERT(obj, dictoffset % SIZEOF_VOID_P == 0); } |