Check the return value of ff_rv34_decode_init() in rv30.c and rv40.c

Avoids possible null pointer dereferences on oom.

Fixes ticket #2727.
pull/27/head
Carl Eugen Hoyos 12 years ago
parent 5d3c3035b7
commit b86651a208
  1. 5
      libavcodec/rv30.c
  2. 5
      libavcodec/rv40.c

@ -248,9 +248,12 @@ static void rv30_loop_filter(RV34DecContext *r, int row)
static av_cold int rv30_decode_init(AVCodecContext *avctx) static av_cold int rv30_decode_init(AVCodecContext *avctx)
{ {
RV34DecContext *r = avctx->priv_data; RV34DecContext *r = avctx->priv_data;
int ret;
r->rv30 = 1; r->rv30 = 1;
ff_rv34_decode_init(avctx); ret = ff_rv34_decode_init(avctx);
if (ret < 0)
return ret;
if(avctx->extradata_size < 2){ if(avctx->extradata_size < 2){
av_log(avctx, AV_LOG_ERROR, "Extradata is too small.\n"); av_log(avctx, AV_LOG_ERROR, "Extradata is too small.\n");
return -1; return -1;

@ -547,9 +547,12 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
static av_cold int rv40_decode_init(AVCodecContext *avctx) static av_cold int rv40_decode_init(AVCodecContext *avctx)
{ {
RV34DecContext *r = avctx->priv_data; RV34DecContext *r = avctx->priv_data;
int ret;
r->rv30 = 0; r->rv30 = 0;
ff_rv34_decode_init(avctx); ret = ff_rv34_decode_init(avctx);
if (ret < 0)
return ret;
if(!aic_top_vlc.bits) if(!aic_top_vlc.bits)
rv40_init_tables(); rv40_init_tables();
r->parse_slice_header = rv40_parse_slice_header; r->parse_slice_header = rv40_parse_slice_header;

Loading…
Cancel
Save