In wma_decode_superframe() we check the size of the input buffer twice.
Both checks are redundant because the input queue size of the wmadec
filter node already makes sure we never pass a smaller value. The
second check is in fact wrong, because pwd->ahi.packet_size -
WMA_FRAME_SKIP would be the correct limit to check.
int ret;
int16_t *samples;
- if (buf_size == 0) {
- pwd->last_superframe_len = 0;
- *data_size = 0;
- return 0;
- }
- if (buf_size < pwd->ahi.block_align) {
- *data_size = 0;
- return 0;
- }
- buf_size = pwd->ahi.block_align;
+ buf_size = pwd->ahi.packet_size - WMA_FRAME_SKIP;
samples = data;
init_get_bits(&pwd->gb, buf, buf_size);
if (pwd->ahi.use_bit_reservoir) {