mirror of
https://github.com/python/cpython.git
synced 2026-10-28 10:25:05 +08:00
gh-148286: Fix UB in ZstdDecompressor.unused_data when a frame is decompressed in one call (#153258)
Co-authored-by: Emma Smith <emma@emmatyping.dev>
This commit is contained in:
1 parent
ed716551e1
commit
adebb68153
3 files changed
+11
-6
No files matched your search
@@ -0,0 +1,3 @@
|
||||
Fix undefined behavior in
|
||||
:attr:`compression.zstd.ZstdDecompressor.unused_data` when a complete frame
|
||||
was decompressed in a single call.
|
||||
@@ -594,9 +594,14 @@ _zstd_ZstdDecompressor_unused_data_get_impl(ZstdDecompressor *self)
|
||||
}
|
||||
else {
|
||||
if (self->unused_data == NULL) {
|
||||
self->unused_data = PyBytes_FromStringAndSize(
|
||||
self->input_buffer + self->in_begin,
|
||||
self->in_end - self->in_begin);
|
||||
if (self->input_buffer == NULL) {
|
||||
self->unused_data = Py_GetConstant(Py_CONSTANT_EMPTY_BYTES);
|
||||
}
|
||||
else {
|
||||
self->unused_data = PyBytes_FromStringAndSize(
|
||||
self->input_buffer + self->in_begin,
|
||||
self->in_end - self->in_begin);
|
||||
}
|
||||
ret = self->unused_data;
|
||||
Py_XINCREF(ret);
|
||||
}
|
||||
|
||||
@@ -15,8 +15,5 @@ shift-base:Modules/_ctypes/cfield.c
|
||||
# Modules/_ctypes/cfield.c:640:1: runtime error: signed integer overflow: -2147483648 - 1 cannot be represented in type 'int'
|
||||
signed-integer-overflow:Modules/_ctypes/cfield.c
|
||||
|
||||
# Modules/_zstd/decompressor.c:598:56: runtime error: applying non-zero offset 18446744073709551615 to null pointer
|
||||
pointer-overflow:Modules/_zstd/decompressor.c
|
||||
|
||||
# Modules/_io/stringio.c:350:24: runtime error: addition of unsigned offset to 0x7fd01ec25850 overflowed to 0x7fd01ec2584c
|
||||
pointer-overflow:Modules/_io/stringio.c
|
||||
Reference in new issue
Block a user