mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
wavenc: Fixed INFO chunk corruption, caused by odd sized data not being padded. Code style was updated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/873>
This commit is contained in:
parent
5fe0aa03eb
commit
2a4c63036b
1 changed files with 9 additions and 2 deletions
|
@ -546,6 +546,7 @@ gst_wavparse_tags_foreach (const GstTagList * tags, const gchar * tag,
|
||||||
0, NULL}
|
0, NULL}
|
||||||
};
|
};
|
||||||
gint n;
|
gint n;
|
||||||
|
size_t size;
|
||||||
gchar *str = NULL;
|
gchar *str = NULL;
|
||||||
GstByteWriter *bw = data;
|
GstByteWriter *bw = data;
|
||||||
for (n = 0; rifftags[n].fcc != 0; n++) {
|
for (n = 0; rifftags[n].fcc != 0; n++) {
|
||||||
|
@ -563,9 +564,15 @@ gst_wavparse_tags_foreach (const GstTagList * tags, const gchar * tag,
|
||||||
gst_tag_list_get_string (tags, tag, &str);
|
gst_tag_list_get_string (tags, tag, &str);
|
||||||
}
|
}
|
||||||
if (str) {
|
if (str) {
|
||||||
|
/* get string length including null termination */
|
||||||
|
size = strlen (str) + 1;
|
||||||
gst_byte_writer_put_uint32_le (bw, rifftags[n].fcc);
|
gst_byte_writer_put_uint32_le (bw, rifftags[n].fcc);
|
||||||
gst_byte_writer_put_uint32_le (bw, GST_ROUND_UP_2 (strlen (str)));
|
gst_byte_writer_put_uint32_le (bw, GST_ROUND_UP_2 (size));
|
||||||
gst_byte_writer_put_string (bw, str);
|
gst_byte_writer_put_data (bw, (const guint8 *) str, size);
|
||||||
|
/* add padding if needed */
|
||||||
|
if (GST_ROUND_UP_2 (size) > size) {
|
||||||
|
gst_byte_writer_put_uint8 (bw, 0);
|
||||||
|
}
|
||||||
g_free (str);
|
g_free (str);
|
||||||
str = NULL;
|
str = NULL;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue