From: Vincent Fu Date: Fri, 11 Mar 2022 00:45:46 +0000 (-0500) Subject: fuzz: avoid building t/fuzz/parse_ini by default X-Git-Tag: fio-3.30~12^2 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=a77e8ab428a842327af069083ee96cba73caf1d8 fuzz: avoid building t/fuzz/parse_ini by default With a vanilla build t/fuzz/parse_ini will segfault because the symbol FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is not defined. If the symbol FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined, fio won't tear down shared memory on program termination. Not tearing down shared memory is necessary for t/fuzz/parse_ini to work correctly. Don't build t/fuzz/parse_ini unless CFLAGS contains -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION. Signed-off-by: Vincent Fu --- diff --git a/Makefile b/Makefile index 6ffd3d13..e670c1f2 100644 --- a/Makefile +++ b/Makefile @@ -385,14 +385,16 @@ T_MEMLOCK_PROGS = t/memlock T_TT_OBJS = t/time-test.o T_TT_PROGS = t/time-test +ifneq (,$(findstring -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION,$(CFLAGS))) T_FUZZ_OBJS = t/fuzz/fuzz_parseini.o T_FUZZ_OBJS += $(OBJS) ifdef CONFIG_ARITHMETIC T_FUZZ_OBJS += lex.yy.o y.tab.o endif +# For proper fio code teardown CFLAGS needs to include -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION # in case there is no fuzz driver defined by environment variable LIB_FUZZING_ENGINE, use a simple one # For instance, with compiler clang, address sanitizer and libFuzzer as a fuzzing engine, you should define -# export CFLAGS="-fsanitize=address,fuzzer-no-link" +# export CFLAGS="-fsanitize=address,fuzzer-no-link -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" # export LIB_FUZZING_ENGINE="-fsanitize=address" # export CC=clang # before running configure && make @@ -401,6 +403,10 @@ ifndef LIB_FUZZING_ENGINE T_FUZZ_OBJS += t/fuzz/onefile.o endif T_FUZZ_PROGS = t/fuzz/fuzz_parseini +else # CFLAGS includes -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +T_FUZZ_OBJS = +T_FUZZ_PROGS = +endif T_OBJS = $(T_SMALLOC_OBJS) T_OBJS += $(T_IEEE_OBJS)