Commit b03761b1 authored by Justin Ruggles's avatar Justin Ruggles
Browse files

libgsmdec: check output buffer size before decoding

parent bac2597a
master n7.1-dev n7.0.2 n7.0.1 n7.0 n6.2-dev n6.1.2 n6.1.1 n6.1 n6.1-dev n6.0.1 n6.0 n5.2-dev n5.1.6 n5.1.5 n5.1.4 n5.1.3 n5.1.2 n5.1.1 n5.1 n5.1-dev n5.0.3 n5.0.2 n5.0.1 n5.0 n4.5-dev n4.4.5 n4.4.4 n4.4.3 n4.4.2 n4.4.1 n4.4 n4.4-dev n4.3.8 n4.3.7 n4.3.6 n4.3.5 n4.3.4 n4.3.3 n4.3.2 n4.3.1 n4.3 n4.3-dev n4.2.10 n4.2.9 n4.2.8 n4.2.7 n4.2.6 n4.2.5 n4.2.4 n4.2.3 n4.2.2 n4.2.1 n4.2 n4.2-dev n4.1.11 n4.1.10 n4.1.9 n4.1.8 n4.1.7 n4.1.6 n4.1.5 n4.1.4 n4.1.3 n4.1.2 n4.1.1 n4.1 n4.1-dev n4.0.6 n4.0.5 n4.0.4 n4.0.3 n4.0.2 n4.0.1 n4.0 n3.5-dev n3.4.13 n3.4.12 n3.4.11 n3.4.10 n3.4.9 n3.4.8 n3.4.7 n3.4.6 n3.4.5 n3.4.4 n3.4.3 n3.4.2 n3.4.1 n3.4 n3.4-dev n3.3.9 n3.3.8 n3.3.7 n3.3.6 n3.3.5 n3.3.4 n3.3.3 n3.3.2 n3.3.1 n3.3 n3.3-dev n3.2.19 n3.2.18 n3.2.17 n3.2.16 n3.2.15 n3.2.14 n3.2.13 n3.2.12 n3.2.11 n3.2.10 n3.2.9 n3.2.8 n3.2.7 n3.2.6 n3.2.5 n3.2.4 n3.2.3 n3.2.2 n3.2.1 n3.2 n3.2-dev n3.1.11 n3.1.10 n3.1.9 n3.1.8 n3.1.7 n3.1.6 n3.1.5 n3.1.4 n3.1.3 n3.1.2 n3.1.1 n3.1 n3.1-dev n3.0.12 n3.0.11 n3.0.10 n3.0.9 n3.0.8 n3.0.7 n3.0.6 n3.0.5 n3.0.4 n3.0.3 n3.0.2 n3.0.1 n3.0 n2.9-dev n2.8.22 n2.8.21 n2.8.20 n2.8.19 n2.8.18 n2.8.17 n2.8.16 n2.8.15 n2.8.14 n2.8.13 n2.8.12 n2.8.11 n2.8.10 n2.8.9 n2.8.8 n2.8.7 n2.8.6 n2.8.5 n2.8.4 n2.8.3 n2.8.2 n2.8.1 n2.8 n2.8-dev n2.7.7 n2.7.6 n2.7.5 n2.7.4 n2.7.3 n2.7.2 n2.7.1 n2.7 n2.7-dev n2.6.9 n2.6.8 n2.6.7 n2.6.6 n2.6.5 n2.6.4 n2.6.3 n2.6.2 n2.6.1 n2.6 n2.6-dev n2.5.11 n2.5.10 n2.5.9 n2.5.8 n2.5.7 n2.5.6 n2.5.5 n2.5.4 n2.5.3 n2.5.2 n2.5.1 n2.5 n2.5-dev n2.4.14 n2.4.13 n2.4.12 n2.4.11 n2.4.10 n2.4.9 n2.4.8 n2.4.7 n2.4.6 n2.4.5 n2.4.4 n2.4.3 n2.4.2 n2.4.1 n2.4 n2.4-dev n2.3.6 n2.3.5 n2.3.4 n2.3.3 n2.3.2 n2.3.1 n2.3 n2.3-dev n2.2.16 n2.2.15 n2.2.14 n2.2.13 n2.2.12 n2.2.11 n2.2.10 n2.2.9 n2.2.8 n2.2.7 n2.2.6 n2.2.5 n2.2.4 n2.2.3 n2.2.2 n2.2.1 n2.2 n2.2-rc2 n2.2-rc1 n2.2-dev n2.1.8 n2.1.7 n2.1.6 n2.1.5 n2.1.4 n2.1.3 n2.1.2 n2.1.1 n2.1 n2.1-dev n2.0.7 n2.0.6 n2.0.5 n2.0.4 n2.0.3 n2.0.2 n2.0.1 n2.0 n1.3-dev n1.2.12 n1.2.11 n1.2.10 n1.2.9 n1.2.8 n1.2.7 n1.2.6 n1.2.5 n1.2.4 n1.2.3 n1.2.2 n1.2.1 n1.2 n1.2-dev n1.1.16 n1.1.15 n1.1.14 n1.1.13 n1.1.12 n1.1.11 n1.1.10 n1.1.9 n1.1.8 n1.1.7 n1.1.6 n1.1.5 n1.1.4 n1.1.3 n1.1.2 n1.1.1 n1.1 n1.1-dev n1.0.10 n1.0.9 n1.0.8 n1.0.7 n1.0.6 n1.0.5 n1.0.4 n1.0.3 n1.0.2 n1.0.1 n1.0 n0.12-dev n0.11.5 n0.11.4 n0.11.3 n0.11.2 n0.11.1 n0.11 n0.11-dev n0.10.16 n0.10.15 n0.10.14 n0.10.13 n0.10.12 n0.10.11 n0.10.10 n0.10.9 n0.10.8 n0.10.7 n0.10.6 n0.10.5 n0.10.4 n0.10.3 n0.10.2 n0.10.1 n0.10 n0.9.4 n0.9.3 n0.9.2 n0.9.1 n0.9
No related merge requests found
Showing with 9 additions and 2 deletions
+9 -2
......@@ -168,18 +168,25 @@ static int libgsm_decode_frame(AVCodecContext *avctx,
AVPacket *avpkt) {
uint8_t *buf = avpkt->data;
int buf_size = avpkt->size;
int out_size = avctx->frame_size * av_get_bytes_per_sample(avctx->sample_fmt);
if (*data_size < out_size) {
av_log(avctx, AV_LOG_ERROR, "Output buffer is too small\n");
return AVERROR(EINVAL);
}
*data_size = 0; /* In case of error */
if(buf_size < avctx->block_align) return -1;
switch(avctx->codec_id) {
case CODEC_ID_GSM:
if(gsm_decode(avctx->priv_data,buf,data)) return -1;
*data_size = GSM_FRAME_SIZE*sizeof(int16_t);
break;
case CODEC_ID_GSM_MS:
if(gsm_decode(avctx->priv_data,buf,data) ||
gsm_decode(avctx->priv_data,buf+33,((int16_t*)data)+GSM_FRAME_SIZE)) return -1;
*data_size = GSM_FRAME_SIZE*sizeof(int16_t)*2;
}
*data_size = out_size;
return avctx->block_align;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment