Mercurial > libavcodec.hg
comparison utils.c @ 10229:bd1c4a438c7f libavcodec
Check codec_id and codec_type in avcodec_open(), based on 43_codec_type_mismatch.patch from chrome
This is said to be able to lead to a stack based buffer overflow.
author | michael |
---|---|
date | Tue, 22 Sep 2009 22:44:56 +0000 |
parents | 1b2ef85867a9 |
children | b81ec4ac8f96 |
comparison
equal
deleted
inserted
replaced
10228:b783894a1c62 | 10229:bd1c4a438c7f |
---|---|
479 ret = AVERROR(EINVAL); | 479 ret = AVERROR(EINVAL); |
480 goto end; | 480 goto end; |
481 } | 481 } |
482 | 482 |
483 avctx->codec = codec; | 483 avctx->codec = codec; |
484 avctx->codec_id = codec->id; | 484 if(avctx->codec_id != codec->id || avctx->codec_type != codec->type){ |
485 av_log(avctx, AV_LOG_ERROR, "codec type or id mismatches\n"); | |
486 goto end; | |
487 } | |
485 avctx->frame_number = 0; | 488 avctx->frame_number = 0; |
486 if(avctx->codec->init){ | 489 if(avctx->codec->init){ |
487 ret = avctx->codec->init(avctx); | 490 ret = avctx->codec->init(avctx); |
488 if (ret < 0) { | 491 if (ret < 0) { |
489 av_freep(&avctx->priv_data); | 492 av_freep(&avctx->priv_data); |