From 9a1547ba1e4e733aaf8d77ccc3d3576edea9f190 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Tue, 5 Oct 2021 22:18:36 +0200 Subject: [PATCH] avfilter/tests/filtfmts: Check for existence of formats/channel layouts Fixes segfaults with filters that either return AVERROR(EAGAIN) (or another error) or that do not set everything and rely on filter_query_formats() to set the rest. Signed-off-by: Andreas Rheinhardt --- libavfilter/tests/filtfmts.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavfilter/tests/filtfmts.c b/libavfilter/tests/filtfmts.c index 07e387b92e..d793480344 100644 --- a/libavfilter/tests/filtfmts.c +++ b/libavfilter/tests/filtfmts.c @@ -43,7 +43,7 @@ static void print_formats_internal(AVFilterLink **links, const AVFilterPad *pads if (link->type == AVMEDIA_TYPE_VIDEO) { const AVFilterFormats *const fmts = cfg->formats; - for (unsigned j = 0; j < fmts->nb_formats; j++) { + for (unsigned j = 0; fmts && j < fmts->nb_formats; j++) { printf("%s[%u] %s: fmt:%s\n", inout_string, i, pad_name, av_get_pix_fmt_name(fmts->formats[j])); @@ -52,12 +52,12 @@ static void print_formats_internal(AVFilterLink **links, const AVFilterPad *pads const AVFilterFormats *const fmts = cfg->formats; const AVFilterChannelLayouts *const layouts = cfg->channel_layouts; - for (unsigned j = 0; j < fmts->nb_formats; j++) + for (unsigned j = 0; fmts && j < fmts->nb_formats; j++) printf("%s[%u] %s: fmt:%s\n", inout_string, i, pad_name, av_get_sample_fmt_name(fmts->formats[j])); - for (unsigned j = 0; j < layouts->nb_channel_layouts; j++) { + for (unsigned j = 0; layouts && j < layouts->nb_channel_layouts; j++) { char buf[256]; av_get_channel_layout_string(buf, sizeof(buf), -1, layouts->channel_layouts[j]);