diff --git a/libavcodec/libschroedinger.c b/libavcodec/libschroedinger.c index fc9188cb8a..157433ea95 100644 --- a/libavcodec/libschroedinger.c +++ b/libavcodec/libschroedinger.c @@ -191,6 +191,8 @@ SchroFrame *ff_create_schro_frame(AVCodecContext *avctx, uv_height = y_height >> (SCHRO_FRAME_FORMAT_V_SHIFT(schro_frame_fmt)); p_pic = av_mallocz(sizeof(AVPicture)); + if (!p_pic) + return NULL; avpicture_alloc(p_pic, avctx->pix_fmt, y_width, y_height); p_frame = schro_frame_new(); diff --git a/libavcodec/libschroedingerdec.c b/libavcodec/libschroedingerdec.c index 0c5a3fb851..c61aaefafe 100644 --- a/libavcodec/libschroedingerdec.c +++ b/libavcodec/libschroedingerdec.c @@ -271,6 +271,8 @@ static int libschroedinger_decode_frame(AVCodecContext *avctx, /* Decoder needs a frame - create one and push it in. */ frame = ff_create_schro_frame(avctx, p_schro_params->frame_format); + if (!frame) + return AVERROR(ENOMEM); schro_decoder_add_output_picture(decoder, frame); break; diff --git a/libavcodec/libschroedingerenc.c b/libavcodec/libschroedingerenc.c index 3dc1481893..b2c492b990 100644 --- a/libavcodec/libschroedingerenc.c +++ b/libavcodec/libschroedingerenc.c @@ -283,6 +283,8 @@ static int libschroedinger_encode_frame(AVCodecContext *avctx, AVPacket *pkt, } else { /* Allocate frame data to schro input buffer. */ SchroFrame *in_frame = libschroedinger_frame_from_data(avctx, frame); + if (!in_frame) + return AVERROR(ENOMEM); /* Load next frame. */ schro_encoder_push_frame(encoder, in_frame); } @@ -331,6 +333,8 @@ static int libschroedinger_encode_frame(AVCodecContext *avctx, AVPacket *pkt, /* Create output frame. */ p_frame_output = av_mallocz(sizeof(FFSchroEncodedFrame)); + if (!p_frame_output) + return AVERROR(ENOMEM); /* Set output data. */ p_frame_output->size = p_schro_params->enc_buf_size; p_frame_output->p_encbuf = p_schro_params->enc_buf;