Browse Source

8svx: ensure that packet size is multiple of channels.

Fix an assert failure with packets of invalid size.
tags/n1.0
Nicolas George 13 years ago
parent
commit
6eee9f5596
1 changed files with 8 additions and 1 deletions
  1. +8
    -1
      libavcodec/8svx.c

+ 8
- 1
libavcodec/8svx.c View File

@@ -112,9 +112,16 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data,
/* decode and interleave the first packet */
if (!esc->samples && avpkt) {
uint8_t *deinterleaved_samples, *p = NULL;
int packet_size = avpkt->size;

if (packet_size % avctx->channels) {
av_log(avctx, AV_LOG_WARNING, "Packet with odd size, ignoring last byte\n");
if (packet_size < avctx->channels)
return packet_size;
packet_size -= packet_size % avctx->channels;
}
esc->samples_size = !esc->table ?
avpkt->size : avctx->channels + (avpkt->size-avctx->channels) * 2;
packet_size : avctx->channels + (packet_size-avctx->channels) * 2;
if (!(esc->samples = av_malloc(esc->samples_size)))
return AVERROR(ENOMEM);



Loading…
Cancel
Save