mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
fix up signedness in PyImport_ExtendInittab (#4831)
As a result of 92a3c6f493
, 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.
This commit is contained in:
parent
9454060e84
commit
0c644fcda0
1 changed files with 3 additions and 5 deletions
|
@ -2291,7 +2291,7 @@ int
|
||||||
PyImport_ExtendInittab(struct _inittab *newtab)
|
PyImport_ExtendInittab(struct _inittab *newtab)
|
||||||
{
|
{
|
||||||
struct _inittab *p;
|
struct _inittab *p;
|
||||||
Py_ssize_t i, n;
|
size_t i, n;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
|
|
||||||
/* Count the number of entries in both tables */
|
/* Count the number of entries in both tables */
|
||||||
|
@ -2308,13 +2308,11 @@ PyImport_ExtendInittab(struct _inittab *newtab)
|
||||||
_PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
|
_PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
|
||||||
|
|
||||||
/* Allocate new memory for the combined table */
|
/* 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);
|
size_t size = sizeof(struct _inittab) * (i + n + 1);
|
||||||
p = PyMem_RawRealloc(inittab_copy, size);
|
p = PyMem_RawRealloc(inittab_copy, size);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
p = NULL;
|
|
||||||
}
|
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
res = -1;
|
res = -1;
|
||||||
goto done;
|
goto done;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue