mirror of https://git.ffmpeg.org/ffmpeg.git
avfilter/af_aiir: do not leak memory on failure in convert_zp2tf()
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
16ba6a8ad1
commit
3c29f68b4d
|
@ -404,7 +404,7 @@ static int expand(AVFilterContext *ctx, double *pz, int nb, double *coeffs)
|
|||
static int convert_zp2tf(AVFilterContext *ctx, int channels)
|
||||
{
|
||||
AudioIIRContext *s = ctx->priv;
|
||||
int ch, i, j, ret;
|
||||
int ch, i, j, ret = 0;
|
||||
|
||||
for (ch = 0; ch < channels; ch++) {
|
||||
IIRChannel *iir = &s->iir[ch];
|
||||
|
@ -412,21 +412,19 @@ static int convert_zp2tf(AVFilterContext *ctx, int channels)
|
|||
|
||||
topc = av_calloc((iir->nb_ab[0] + 1) * 2, sizeof(*topc));
|
||||
botc = av_calloc((iir->nb_ab[1] + 1) * 2, sizeof(*botc));
|
||||
if (!topc || !botc)
|
||||
return AVERROR(ENOMEM);
|
||||
if (!topc || !botc) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = expand(ctx, iir->ab[0], iir->nb_ab[0], botc);
|
||||
if (ret < 0) {
|
||||
av_free(topc);
|
||||
av_free(botc);
|
||||
return ret;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = expand(ctx, iir->ab[1], iir->nb_ab[1], topc);
|
||||
if (ret < 0) {
|
||||
av_free(topc);
|
||||
av_free(botc);
|
||||
return ret;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
for (j = 0, i = iir->nb_ab[1]; i >= 0; j++, i--) {
|
||||
|
@ -439,11 +437,14 @@ static int convert_zp2tf(AVFilterContext *ctx, int channels)
|
|||
}
|
||||
iir->nb_ab[0]++;
|
||||
|
||||
fail:
|
||||
av_free(topc);
|
||||
av_free(botc);
|
||||
if (ret < 0)
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int decompose_zp2biquads(AVFilterContext *ctx, int channels)
|
||||
|
|
Loading…
Reference in New Issue