From 8db90088c97ba27a7b667feea6707150770bc5ca Mon Sep 17 00:00:00 2001 From: shatty Date: Fri, 30 Jan 2004 06:43:47 +0000 Subject: [PATCH] more strict check on blocksizes in the header git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6426 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/media/plugins/ogg/OggVorbisStream.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/add-ons/media/plugins/ogg/OggVorbisStream.cpp b/src/add-ons/media/plugins/ogg/OggVorbisStream.cpp index cb1ff41fff..39b4bb2f1b 100644 --- a/src/add-ons/media/plugins/ogg/OggVorbisStream.cpp +++ b/src/add-ons/media/plugins/ogg/OggVorbisStream.cpp @@ -59,14 +59,20 @@ static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){ vi->bitrate_upper = oggpack_read(opb, 32); vi->bitrate_nominal = oggpack_read(opb, 32); vi->bitrate_lower = oggpack_read(opb, 32); - oggpack_read(opb, 4); // discard blocksizes 0 - oggpack_read(opb, 4); // discard blocksizes 1 + long blocksizes0 = oggpack_read(opb, 4); + long blocksizes1 = oggpack_read(opb, 4); if (vi->rate < 1) { return -1; } if (vi->channels < 1) { return -1; } + if (blocksizes0 < 8) { + return -1; + } + if (blocksizes1 < blocksizes0) { + return -1; + } if (oggpack_read(opb, 1) != 1) { return -1; } /* EOP check */