more strict check on blocksizes in the header
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6426 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -59,14 +59,20 @@ static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
|
|||||||
vi->bitrate_upper = oggpack_read(opb, 32);
|
vi->bitrate_upper = oggpack_read(opb, 32);
|
||||||
vi->bitrate_nominal = oggpack_read(opb, 32);
|
vi->bitrate_nominal = oggpack_read(opb, 32);
|
||||||
vi->bitrate_lower = oggpack_read(opb, 32);
|
vi->bitrate_lower = oggpack_read(opb, 32);
|
||||||
oggpack_read(opb, 4); // discard blocksizes 0
|
long blocksizes0 = oggpack_read(opb, 4);
|
||||||
oggpack_read(opb, 4); // discard blocksizes 1
|
long blocksizes1 = oggpack_read(opb, 4);
|
||||||
if (vi->rate < 1) {
|
if (vi->rate < 1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (vi->channels < 1) {
|
if (vi->channels < 1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (blocksizes0 < 8) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (blocksizes1 < blocksizes0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
if (oggpack_read(opb, 1) != 1) {
|
if (oggpack_read(opb, 1) != 1) {
|
||||||
return -1;
|
return -1;
|
||||||
} /* EOP check */
|
} /* EOP check */
|
||||||
|
|||||||
Reference in New Issue
Block a user