matroskademux: Fix integer overflows in zlib/bz2/etc decompression code 06/287306/1
authorGilbok Lee <gilbok.lee@samsung.com>
Thu, 26 Jan 2023 08:27:26 +0000 (17:27 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Thu, 26 Jan 2023 08:27:49 +0000 (17:27 +0900)
commit4191e094345ec660c4c00693863ad7720bc9233f
treefc27896453a0d9fe6e055faf99a0a798aad26c29
parentd41c075a2daed9135ce5e7534dec2865a5f9408d
matroskademux: Fix integer overflows in zlib/bz2/etc decompression code

Various variables were of smaller types than needed and there were no
checks for any overflows when doing additions on the sizes. This is all
checked now.

In addition the size of the decompressed data is limited to 120MB now as
any larger sizes are likely pathological and we can avoid out of memory
situations in many cases like this.

Also fix a bug where the available output size on the next iteration in
the zlib/bz2 decompression code was provided too large and could
potentially lead to out of bound writes.

Thanks to Adam Doupe for analyzing and reporting the issue.

CVE: CVE-2022-1922, CVE-2022-1923, CVE-2022-1924, CVE-2022-1925

https://gstreamer.freedesktop.org/security/sa-2022-0002.html

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2610>

Change-Id: I0877b9da20339de5577e7d30a69b66ee7e9cac4b
gst/matroska/matroska-read-common.c