diff --git a/libavcodec/tta.c b/libavcodec/tta.c index ddfcb2ebc1..ed8d76bc1a 100644 --- a/libavcodec/tta.c +++ b/libavcodec/tta.c @@ -263,10 +263,14 @@ static av_cold int tta_decode_init(AVCodecContext * avctx) if (s->bps == 2) { s->decode_buffer = av_mallocz(sizeof(int32_t)*s->frame_length*s->channels); + if (!s->decode_buffer) + return AVERROR(ENOMEM); } s->ch_ctx = av_malloc(avctx->channels * sizeof(*s->ch_ctx)); - if (!s->ch_ctx) + if (!s->ch_ctx) { + av_freep(&s->decode_buffer); return AVERROR(ENOMEM); + } } else { av_log(avctx, AV_LOG_ERROR, "Wrong extradata present\n"); return -1;