fftools/opt_common: fix format string bug in print_program_info

FFMPEG_CONFIGURATION and FFMPEG_VERSION were concatenated into av_log
format strings, so any % in them was interpreted as a conversion
specifier and consumed unrelated varargs, causing undefined behavior
ranging from garbled output to a segfault on `ffmpeg -version`. Pass
both as %s arguments instead.

Fixes issue #23662.

The FFMPEG_CONFIGURATION fix is based on a patch by FinnRG; the
FFMPEG_VERSION case is fixed here as well.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
(cherry picked from commit 160737cf0d)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Zhao Zhili
2026-07-06 20:17:13 +08:00
committed by Michael Niedermayer
parent 02edc0f612
commit 7bda4f9d15

View File

@@ -201,14 +201,14 @@ static void print_program_info(int flags, int level)
{
const char *indent = flags & INDENT? " " : "";
av_log(NULL, level, "%s version " FFMPEG_VERSION, program_name);
av_log(NULL, level, "%s version %s", program_name, FFMPEG_VERSION);
if (flags & SHOW_COPYRIGHT)
av_log(NULL, level, " Copyright (c) %d-%d the FFmpeg developers",
program_birth_year, CONFIG_THIS_YEAR);
av_log(NULL, level, "\n");
av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);
av_log(NULL, level, "%sconfiguration: " FFMPEG_CONFIGURATION "\n", indent);
av_log(NULL, level, "%sconfiguration: %s\n", indent, FFMPEG_CONFIGURATION);
}
static void print_buildconf(int flags, int level)