CVE-2024-47543, CVE-2024-47544, CVE-2024-47545, CVE-2024-47546, CVE-2024-47596, CVE-2024-47597, CVE-2024-47598, CVE-2024-47599, CVE-2024-47601, CVE-2024-47602, CVE-2024-47603, CVE-2024-47606, CVE-2024-47613, CVE-2024-47774, CVE-2024-47775, CVE-2024-47776, CVE-2024-47777, CVE-2024-47778, CVE-2024-47834 Resolves: RHEL-70958, RHEL-70971, RHEL-71033, RHEL-71195 Resolves: RHEL-71210, RHEL-71202, RHEL-71171, RHEL-71200 Resolves: RHEL-71206, RHEL-71173, RHEL-71198, RHEL-71204 Resolves: RHEL-71208, RHEL-71031, RHEL-71007, RHEL-71039 Resolves: RHEL-71169, RHEL-71192, RHEL-71161, RHEL-71167 Resolves: RHEL-71189
59 lines
2.3 KiB
Diff
59 lines
2.3 KiB
Diff
From fd072dd84339c6943d147681e9557472267c79f1 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
|
|
Date: Fri, 4 Oct 2024 13:15:27 +0300
|
|
Subject: [PATCH 06/28] wavparse: Fix parsing of acid chunk
|
|
|
|
Simply casting the bytes to a struct can lead to crashes because of unaligned
|
|
reads, and is also missing the endianness swapping that is necessary on big
|
|
endian architectures.
|
|
|
|
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
|
|
---
|
|
.../gst-plugins-good/gst/wavparse/gstwavparse.c | 12 +++++-------
|
|
1 file changed, 5 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/subprojects/gst-plugins-good/gst/wavparse/gstwavparse.c b/subprojects/gst-plugins-good/gst/wavparse/gstwavparse.c
|
|
index 1498249384..5ccf7cd1e1 100644
|
|
--- a/subprojects/gst-plugins-good/gst/wavparse/gstwavparse.c
|
|
+++ b/subprojects/gst-plugins-good/gst/wavparse/gstwavparse.c
|
|
@@ -1433,8 +1433,7 @@ gst_wavparse_stream_headers (GstWavParse * wav)
|
|
break;
|
|
}
|
|
case GST_RIFF_TAG_acid:{
|
|
- const gst_riff_acid *acid = NULL;
|
|
- const guint data_size = sizeof (gst_riff_acid);
|
|
+ const guint data_size = 24;
|
|
gfloat tempo;
|
|
|
|
GST_INFO_OBJECT (wav, "Have acid chunk");
|
|
@@ -1448,13 +1447,13 @@ gst_wavparse_stream_headers (GstWavParse * wav)
|
|
break;
|
|
}
|
|
if (wav->streaming) {
|
|
+ const guint8 *data;
|
|
if (!gst_wavparse_peek_chunk (wav, &tag, &size)) {
|
|
goto exit;
|
|
}
|
|
gst_adapter_flush (wav->adapter, 8);
|
|
- acid = (const gst_riff_acid *) gst_adapter_map (wav->adapter,
|
|
- data_size);
|
|
- tempo = acid->tempo;
|
|
+ data = gst_adapter_map (wav->adapter, data_size);
|
|
+ tempo = GST_READ_FLOAT_LE (data + 20);
|
|
gst_adapter_unmap (wav->adapter);
|
|
} else {
|
|
GstMapInfo map;
|
|
@@ -1465,8 +1464,7 @@ gst_wavparse_stream_headers (GstWavParse * wav)
|
|
&buf)) != GST_FLOW_OK)
|
|
goto header_pull_error;
|
|
gst_buffer_map (buf, &map, GST_MAP_READ);
|
|
- acid = (const gst_riff_acid *) map.data;
|
|
- tempo = acid->tempo;
|
|
+ tempo = GST_READ_FLOAT_LE (map.data + 20);
|
|
gst_buffer_unmap (buf, &map);
|
|
}
|
|
/* send data as tags */
|
|
--
|
|
2.47.0
|
|
|