diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index f83884dfc22242d698e7df396d08264a1da7f38c..4fc1c5a06278660d4145ff072e9054b0339477d8 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -863,8 +863,11 @@ static int decode_iccp_chunk(PNGDecContext *s, int length, AVFrame *f) av_bprint_finalize(&bp, (char **)&data); - if (!(sd = av_frame_new_side_data(f, AV_FRAME_DATA_ICC_PROFILE, bp.len))) + sd = av_frame_new_side_data(f, AV_FRAME_DATA_ICC_PROFILE, bp.len); + if (!sd) { + av_free(data); return AVERROR(ENOMEM); + } av_dict_set(&sd->metadata, "name", profile_name, 0); memcpy(sd->data, data, bp.len);