From 20fb58be198e7d76ece4e6c635cda7c919fad6d2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Wed, 3 Jun 2009 20:42:39 +0100 Subject: [PATCH] vorbisdec: don't put invalid bitrate values into the taglist Bitrates are stored as 32-bit signed integers in the vorbis identification headers, but seem to be read incorrectly, namely as unsigned 32-bit integers, into the vorbis structure members which are of type long, which makes our check for values <= 0 fail with files that put -1 in there for unset values. --- ext/vorbis/vorbisdec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ext/vorbis/vorbisdec.c b/ext/vorbis/vorbisdec.c index 1885be0..c5517bb 100644 --- a/ext/vorbis/vorbisdec.c +++ b/ext/vorbis/vorbisdec.c @@ -721,18 +721,18 @@ vorbis_handle_comment_packet (GstVorbisDec * vd, ogg_packet * packet) gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_ENCODER_VERSION, vd->vi.version, GST_TAG_AUDIO_CODEC, "Vorbis", NULL); - if (vd->vi.bitrate_nominal > 0) { + if (vd->vi.bitrate_nominal > 0 && vd->vi.bitrate_nominal <= 0x7FFFFFFF) { gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_NOMINAL_BITRATE, (guint) vd->vi.bitrate_nominal, NULL); bitrate = vd->vi.bitrate_nominal; } - if (vd->vi.bitrate_upper > 0) { + if (vd->vi.bitrate_upper > 0 && vd->vi.bitrate_upper <= 0x7FFFFFFF) { gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_MAXIMUM_BITRATE, (guint) vd->vi.bitrate_upper, NULL); if (!bitrate) bitrate = vd->vi.bitrate_upper; } - if (vd->vi.bitrate_lower > 0) { + if (vd->vi.bitrate_lower > 0 && vd->vi.bitrate_lower <= 0x7FFFFFFF) { gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_MINIMUM_BITRATE, (guint) vd->vi.bitrate_lower, NULL); if (!bitrate) -- 2.7.4