mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-22 09:41:07 +00:00
flacenc: Correctly handle up to 255 cue entries
The counter was using a signed 8 bit integer, which was overflowing after 127 entries. That was then passed as an unsigned 32 bit integer to libflac, which caused it to be converted to a huge unsigned number. That then caused an invalid memory access inside libflac. As a bonus, signed integer overflow is undefined behaviour. Instead, use an unsigned 8 bit integer. Once this overflows the existing code already catches it and stops adding the cue. While FLAC__metadata_object_cuesheet_insert_track() takes an unsigned 32 bit integer for the track number, FLAC__StreamMetadata_CueSheet_Track is limiting it to an unsigned 8 bit integer. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2921 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5420>
This commit is contained in:
parent
9ec430c713
commit
abdd1967ad
1 changed files with 1 additions and 1 deletions
|
@ -484,7 +484,7 @@ static gboolean
|
||||||
add_cuesheet (const GstToc * toc, guint sample_rate,
|
add_cuesheet (const GstToc * toc, guint sample_rate,
|
||||||
FLAC__StreamMetadata * cuesheet)
|
FLAC__StreamMetadata * cuesheet)
|
||||||
{
|
{
|
||||||
gint8 track_num = 0;
|
guint8 track_num = 0;
|
||||||
gint64 start, stop;
|
gint64 start, stop;
|
||||||
gchar *isrc = NULL;
|
gchar *isrc = NULL;
|
||||||
const gchar *is_legal;
|
const gchar *is_legal;
|
||||||
|
|
Loading…
Reference in a new issue