-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
3.14bugs and security fixesbugs and security fixes3.15new features, bugs and security fixesnew features, bugs and security fixesextension-modulesC modules in the Modules dirC modules in the Modules dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
Description
Location: Python/marshal.c
, function r_object()
, TYPE_SLICE
case
Issue: The code didn't validate the return value of r_ref_reserve()
before passing it to r_ref_insert()
. If r_ref_reserve()
fails and returns -1, this would cause an out-of-bounds memory access when r_ref_insert()
tries to access p->refs[-1]
.
Root Cause: Inconsistent error handling compared to other similar cases in the same file (e.g., TYPE_CODE
and TYPE_FROZENSET
properly check for r_ref_reserve()
failure).
Impact
- Security: Potential memory corruption vulnerability exploitable via crafted marshal data
- Stability: Could cause crashes when deserializing slice objects in error conditions
- Scope: Affects applications using the marshal module to deserialize untrusted data
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Linked PRs
Metadata
Metadata
Assignees
Labels
3.14bugs and security fixesbugs and security fixes3.15new features, bugs and security fixesnew features, bugs and security fixesextension-modulesC modules in the Modules dirC modules in the Modules dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error