diff --git a/include/fuzz.h b/include/fuzz.h new file mode 100644 index 000000000..1b0dbd268 --- /dev/null +++ b/include/fuzz.h @@ -0,0 +1,9 @@ +#ifndef UTIL_LINUX_FUZZ_H +#define UTIL_LINUX_FUZZ_H + +#include +#include + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); + +#endif /* UTIL_LINUX_FUZZ_H */ diff --git a/libmount/src/fuzz.c b/libmount/src/fuzz.c index 7363e2bd9..adfd10605 100644 --- a/libmount/src/fuzz.c +++ b/libmount/src/fuzz.c @@ -1,3 +1,4 @@ +#include "fuzz.h" #include "mountP.h" #include diff --git a/tests/commands.sh b/tests/commands.sh index 5f3445273..2bccaa081 100644 --- a/tests/commands.sh +++ b/tests/commands.sh @@ -18,6 +18,7 @@ TS_HELPER_LIBMOUNT_TAB="${ts_helpersdir}test_mount_tab" TS_HELPER_LIBMOUNT_UPDATE="${ts_helpersdir}test_mount_tab_update" TS_HELPER_LIBMOUNT_UTILS="${ts_helpersdir}test_mount_utils" TS_HELPER_LIBMOUNT_DEBUG="${ts_helpersdir}test_mount_debug" +TS_HELPER_LIBMOUNT_FUZZ="${ts_helpersdir}test_mount_fuzz" TS_HELPER_LIBSMARTCOLS_FROMFILE="${ts_helpersdir}sample-scols-fromfile" TS_HELPER_LIBSMARTCOLS_TITLE="${ts_helpersdir}sample-scols-title" TS_HELPER_PYLIBMOUNT_CONTEXT="$top_srcdir/libmount/python/test_mount_context.py" diff --git a/tests/ts/fuzzers/test_mount_fuzz b/tests/ts/fuzzers/test_mount_fuzz new file mode 100755 index 000000000..610686301 --- /dev/null +++ b/tests/ts/fuzzers/test_mount_fuzz @@ -0,0 +1,26 @@ +#!/bin/bash + +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +TS_TOPDIR="${0%/*}/../.." +TS_DESC="test_mount_fuzz" + +. $TS_TOPDIR/functions.sh +ts_init "$*" + +ts_check_test_command "$TS_HELPER_LIBMOUNT_FUZZ" + +mkdir -p ${TS_OUTPUT}_workdir +ts_run $TS_HELPER_LIBMOUNT_FUZZ ${TS_OUTPUT}_workdir ${TS_SCRIPT}_files -max_total_time=10 >$TS_OUTPUT 2>$TS_ERRLOG + +ts_finalize diff --git a/tests/ts/fuzzers/test_mount_fuzz_files/oss-fuzz-23722 b/tests/ts/fuzzers/test_mount_fuzz_files/oss-fuzz-23722 new file mode 100644 index 000000000..f66c9cf4c Binary files /dev/null and b/tests/ts/fuzzers/test_mount_fuzz_files/oss-fuzz-23722 differ