From cc660f8609fd2f8a2a753c4fc1c3e18e6713847c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Wed, 6 Aug 2025 02:25:21 +0200 Subject: [PATCH] fuzzers: set fontconfig sysroot Allows to specify custom fontconfig sysroot. Useful for fuzzing environments where we might use specific config, font or the system wide config is not available. --- fuzzers/common.h | 7 +++++++ fuzzers/fuzzer_load.c | 2 ++ fuzzers/fuzzer_loadfile_direct.c | 2 ++ fuzzers/fuzzer_options_parser.c | 2 ++ fuzzers/fuzzer_set_property.c | 2 ++ 5 files changed, 15 insertions(+) diff --git a/fuzzers/common.h b/fuzzers/common.h index f3160b957c..e8d32fa76b 100644 --- a/fuzzers/common.h +++ b/fuzzers/common.h @@ -48,6 +48,13 @@ static inline bool str_startswith(const char *str, size_t str_len, return !memcmp(str, prefix, prefix_len); } +static inline void set_fontconfig_sysroot(void) +{ +#ifdef MPV_FONTCONFIG_SYSROOT + setenv("FONTCONFIG_SYSROOT", MPV_STRINGIFY(MPV_FONTCONFIG_SYSROOT), 1); +#endif +} + #ifndef PLAYBACK_TIME_LIMIT #define PLAYBACK_TIME_LIMIT 5 #endif diff --git a/fuzzers/fuzzer_load.c b/fuzzers/fuzzer_load.c index db3b192075..d1aa7f215b 100644 --- a/fuzzers/fuzzer_load.c +++ b/fuzzers/fuzzer_load.c @@ -64,6 +64,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) if (sprintf(filename, "fd://%d", fd) <= 5) exit(1); + set_fontconfig_sysroot(); + mpv_handle *ctx = mpv_create(); if (!ctx) exit(1); diff --git a/fuzzers/fuzzer_loadfile_direct.c b/fuzzers/fuzzer_loadfile_direct.c index f12134f22f..9efd4ab964 100644 --- a/fuzzers/fuzzer_loadfile_direct.c +++ b/fuzzers/fuzzer_loadfile_direct.c @@ -39,6 +39,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) return 0; #endif + set_fontconfig_sysroot(); + mpv_handle *ctx = mpv_create(); if (!ctx) exit(1); diff --git a/fuzzers/fuzzer_options_parser.c b/fuzzers/fuzzer_options_parser.c index c759a099ec..64add540eb 100644 --- a/fuzzers/fuzzer_options_parser.c +++ b/fuzzers/fuzzer_options_parser.c @@ -56,6 +56,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) } opts[count] = NULL; + set_fontconfig_sysroot(); + mpv_handle *ctx = mpv_create(); if (!ctx) exit(1); diff --git a/fuzzers/fuzzer_set_property.c b/fuzzers/fuzzer_set_property.c index f5c17c342a..8faf9065e9 100644 --- a/fuzzers/fuzzer_set_property.c +++ b/fuzzers/fuzzer_set_property.c @@ -54,6 +54,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) if (!name_len || name_len != size - value_len - 1) return 0; + set_fontconfig_sysroot(); + mpv_handle *ctx = mpv_create(); if (!ctx) exit(1);