mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +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) | ||||
| { | ||||
|     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; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Benjamin Peterson
						Benjamin Peterson