mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-18 13:00:00 +01:00
avfilter/formats: guard against double free
This commit is contained in:
@@ -456,7 +456,7 @@ do { \
|
|||||||
do { \
|
do { \
|
||||||
int idx = -1; \
|
int idx = -1; \
|
||||||
\
|
\
|
||||||
if (!*ref || !(*ref)->refs) \
|
if (!ref || !*ref || !(*ref)->refs) \
|
||||||
return; \
|
return; \
|
||||||
\
|
\
|
||||||
FIND_REF_INDEX(ref, idx); \
|
FIND_REF_INDEX(ref, idx); \
|
||||||
@@ -518,6 +518,7 @@ void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
|
|||||||
int ret = ref_fn(fmts, &ctx->inputs[i]->out_fmts); \
|
int ret = ref_fn(fmts, &ctx->inputs[i]->out_fmts); \
|
||||||
if (ret < 0) { \
|
if (ret < 0) { \
|
||||||
unref_fn(&fmts); \
|
unref_fn(&fmts); \
|
||||||
|
if (fmts) \
|
||||||
av_freep(&fmts->list); \
|
av_freep(&fmts->list); \
|
||||||
av_freep(&fmts); \
|
av_freep(&fmts); \
|
||||||
return ret; \
|
return ret; \
|
||||||
@@ -530,6 +531,7 @@ void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
|
|||||||
int ret = ref_fn(fmts, &ctx->outputs[i]->in_fmts); \
|
int ret = ref_fn(fmts, &ctx->outputs[i]->in_fmts); \
|
||||||
if (ret < 0) { \
|
if (ret < 0) { \
|
||||||
unref_fn(&fmts); \
|
unref_fn(&fmts); \
|
||||||
|
if (fmts) \
|
||||||
av_freep(&fmts->list); \
|
av_freep(&fmts->list); \
|
||||||
av_freep(&fmts); \
|
av_freep(&fmts); \
|
||||||
return ret; \
|
return ret; \
|
||||||
|
|||||||
Reference in New Issue
Block a user