[FFmpeg-cvslog] vorbisdec: Check that the x values of floor1 are unique.
Michael Niedermayer
git at videolan.org
Mon Jan 16 03:40:27 CET 2012
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Thu Jan 12 04:21:47 2012 +0100| [ebc9ff8e7d6e9b33a5839d027dd823cf83824d60] | committer: Michael Niedermayer
vorbisdec: Check that the x values of floor1 are unique.
This is required by the spec and fixes video-1frag.ogg.48.ogg. (FPE)
Based on the debuging work of Oana Stratulat and ubitux.
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ebc9ff8e7d6e9b33a5839d027dd823cf83824d60
---
libavcodec/vorbisdec.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index 6bf785e..03e3d75 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -579,6 +579,14 @@ static int vorbis_parse_setup_hdr_floors(vorbis_context *vc)
// Precalculate order of x coordinates - needed for decode
ff_vorbis_ready_floor1_list(floor_setup->data.t1.list, floor_setup->data.t1.x_list_dim);
+
+ for (j=1; j<floor_setup->data.t1.x_list_dim; j++) {
+ if ( floor_setup->data.t1.list[ floor_setup->data.t1.list[j-1].sort ].x
+ == floor_setup->data.t1.list[ floor_setup->data.t1.list[j ].sort ].x) {
+ av_log(vc->avccontext, AV_LOG_ERROR, "Non unique x values in floor type 1\n");
+ return AVERROR_INVALIDDATA;
+ }
+ }
} else if (floor_setup->floor_type == 0) {
unsigned max_codebook_dim = 0;
More information about the ffmpeg-cvslog
mailing list