Commit 0c644fcd authored by Benjamin Peterson's avatar Benjamin Peterson Committed by GitHub

fix up signedness in PyImport_ExtendInittab (#4831)

As a result of 92a3c6f4, the compiler complains:

Python/import.c:2311:21: warning: comparison of integers of different signs: 'long' and 'unsigned long' [-Wsign-compare]
    if ((i + n + 1) <= PY_SSIZE_T_MAX / sizeof(struct _inittab)) {
         ~~~~~~~~~  ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This overflow is extremely unlikely to happen, but let's avoid undefined
behavior anyway.
parent 9454060e
......@@ -2291,7 +2291,7 @@ int
PyImport_ExtendInittab(struct _inittab *newtab)
{
struct _inittab *p;
Py_ssize_t i, n;
size_t i, n;
int res = 0;
/* Count the number of entries in both tables */
......@@ -2308,13 +2308,11 @@ PyImport_ExtendInittab(struct _inittab *newtab)
_PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
/* Allocate new memory for the combined table */
if ((i + n + 1) <= PY_SSIZE_T_MAX / (Py_ssize_t)sizeof(struct _inittab)) {
p = NULL;
if (i + n <= SIZE_MAX / sizeof(struct _inittab) - 1) {
size_t size = sizeof(struct _inittab) * (i + n + 1);
p = PyMem_RawRealloc(inittab_copy, size);
}
else {
p = NULL;
}
if (p == NULL) {
res = -1;
goto done;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment