You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
Fix undefined expressions that use multiple calls to get_bits().
Because the order of evaluation of subexpressions is undefined, two get_bits() calls may not be part of the same expression. See also r24902. Originally committed as revision 24906 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@@ -1027,7 +1027,7 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
|
|||||||
if(8*len + get_bits_count(&s->gb) > s->gb.size_in_bits)
|
if(8*len + get_bits_count(&s->gb) > s->gb.size_in_bits)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
id = (get_bits(&s->gb, 16) << 16) | get_bits(&s->gb, 16);
|
id = get_bits_long(&s->gb, 32);
|
||||||
id = av_be2ne32(id);
|
id = av_be2ne32(id);
|
||||||
len -= 6;
|
len -= 6;
|
||||||
|
|
||||||
@@ -1134,7 +1134,7 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
|
|||||||
/* Apple MJPEG-A */
|
/* Apple MJPEG-A */
|
||||||
if ((s->start_code == APP1) && (len > (0x28 - 8)))
|
if ((s->start_code == APP1) && (len > (0x28 - 8)))
|
||||||
{
|
{
|
||||||
id = (get_bits(&s->gb, 16) << 16) | get_bits(&s->gb, 16);
|
id = get_bits_long(&s->gb, 32);
|
||||||
id = av_be2ne32(id);
|
id = av_be2ne32(id);
|
||||||
len -= 4;
|
len -= 4;
|
||||||
if (id == AV_RL32("mjpg")) /* Apple MJPEG-A */
|
if (id == AV_RL32("mjpg")) /* Apple MJPEG-A */
|
||||||
|
@@ -1209,7 +1209,8 @@ static void qdm2_decode_super_block (QDM2Context *q)
|
|||||||
init_get_bits(&gb, header.data, header.size*8);
|
init_get_bits(&gb, header.data, header.size*8);
|
||||||
|
|
||||||
if (header.type == 2 || header.type == 4 || header.type == 5) {
|
if (header.type == 2 || header.type == 4 || header.type == 5) {
|
||||||
int csum = 257 * get_bits(&gb, 8) + 2 * get_bits(&gb, 8);
|
int csum = 257 * get_bits(&gb, 8);
|
||||||
|
csum += 2 * get_bits(&gb, 8);
|
||||||
|
|
||||||
csum = qdm2_packet_checksum(q->compressed_data, q->checksum_size, csum);
|
csum = qdm2_packet_checksum(q->compressed_data, q->checksum_size, csum);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user