bpo-40412: Nullify inittab_copy during finalization (GH-19746)
Otherwise we leave a dangling pointer to free'd memory. If we
then initialize a new interpreter in the same process and call
PyImport_ExtendInittab, we will (likely) crash when calling
PyMem_RawRealloc(inittab_copy, ...) since the pointer address
is bogus.
Automerge-Triggered-By: @brettcannon
(cherry picked from commit 64224a4727
)
Co-authored-by: Gregory Szorc <gregory.szorc@gmail.com>
This commit is contained in:
parent
e05828055e
commit
1205afb3e1
|
@ -0,0 +1 @@
|
||||||
|
Nullify inittab_copy during finalization, preventing future interpreter initializations in an embedded situation from crashing. Patch by Gregory Szorc.
|
|
@ -300,6 +300,7 @@ _PyImport_Fini2(void)
|
||||||
|
|
||||||
/* Free memory allocated by PyImport_ExtendInittab() */
|
/* Free memory allocated by PyImport_ExtendInittab() */
|
||||||
PyMem_RawFree(inittab_copy);
|
PyMem_RawFree(inittab_copy);
|
||||||
|
inittab_copy = NULL;
|
||||||
|
|
||||||
PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
|
PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue