From ef0cc9b583388720a9db5321b8476061b6a1184f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 26 Sep 2024 09:20:28 +0300 Subject: [PATCH 20/28] qtdemux: Make sure only an even number of bytes is processed when handling CEA608 data An odd number of bytes would lead to out of bound reads and writes, and doesn't make any sense as CEA608 comes in byte pairs. Strip off any leftover bytes and assume everything before that is valid. Thanks to Antonio Morales for finding and reporting the issue. Fixes GHSL-2024-195 Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3841 Part-of: --- subprojects/gst-plugins-good/gst/isomp4/qtdemux.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c b/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c index 0b86cfd86c..1e95f5b5f2 100644 --- a/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c +++ b/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c @@ -5783,6 +5783,11 @@ convert_to_s334_1a (const guint8 * ccpair, guint8 ccpair_size, guint field, guint8 *storage; gsize i; + /* Strip off any leftover odd bytes and assume everything before is valid */ + if (ccpair_size % 2 != 0) { + ccpair_size -= 1; + } + /* We are converting from pairs to triplets */ *res = ccpair_size / 2 * 3; storage = g_malloc (*res); -- 2.47.0