Don't update the internal decoder state until we know the packet is valid

This commit is contained in:
Jean-Marc Valin 2012-12-04 14:13:00 -05:00
parent 7fcd66c40d
commit a5bd440931

View file

@ -785,17 +785,20 @@ int opus_decode_native(OpusDecoder *st, const unsigned char *data,
return frame_size;
}
tot_offset = 0;
st->mode = packet_mode;
st->bandwidth = packet_bandwidth;
st->frame_size = packet_frame_size;
st->stream_channels = packet_stream_channels;
if (count < 0)
return count;
tot_offset += offset;
if (count*st->frame_size > frame_size)
if (count*packet_frame_size > frame_size)
return OPUS_BUFFER_TOO_SMALL;
/* Update the state as the last step to avoid updating it on an invalid packet */
st->mode = packet_mode;
st->bandwidth = packet_bandwidth;
st->frame_size = packet_frame_size;
st->stream_channels = packet_stream_channels;
nb_samples=0;
for (i=0;i<count;i++)
{