aboutsummaryrefslogtreecommitdiff
path: root/projects/bitcoin-core
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2021-05-04 05:08:50 +0200
committerGitHub <noreply@github.com>2021-05-03 20:08:50 -0700
commitaba8d0d871bffad978c85bbe26d57674f61aeb6f (patch)
tree36b6ee0520e12899c1300a7a7b03e592ccb2f347 /projects/bitcoin-core
parente9d47ca070d5f75365e9a5021e421a0845e061c5 (diff)
downloadoss-fuzz-aba8d0d871bffad978c85bbe26d57674f61aeb6f.tar.gz
bitcoin-core: Add honggfuzz support (#5703)
Diffstat (limited to 'projects/bitcoin-core')
-rwxr-xr-xprojects/bitcoin-core/build.sh30
-rw-r--r--projects/bitcoin-core/project.yaml1
2 files changed, 18 insertions, 13 deletions
diff --git a/projects/bitcoin-core/build.sh b/projects/bitcoin-core/build.sh
index 6574738ba..f45b3ec12 100755
--- a/projects/bitcoin-core/build.sh
+++ b/projects/bitcoin-core/build.sh
@@ -35,22 +35,26 @@ fi
./autogen.sh
-# Limit to one target as temporary workaround for https://github.com/google/oss-fuzz/pull/5699#issuecomment-831030305
-export ONLY_ONE_TARGET="process_messages"
-sed -i "s|std::getenv(\"FUZZ\")|\"$ONLY_ONE_TARGET\"|g" "./src/test/fuzz/fuzz.cpp"
-
# OSS-Fuzz will provide CC, CXX, etc. So only set:
# * --enable-fuzz, see https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md
# * CONFIG_SITE, see https://github.com/bitcoin/bitcoin/blob/master/depends/README.md
-CONFIG_SITE="$PWD/depends/$BUILD_TRIPLET/share/config.site" ./configure --enable-fuzz --with-sanitizers=fuzzer
+if [ "$FUZZING_ENGINE" = "libfuzzer" ]; then
+ CONFIG_SITE="$PWD/depends/$BUILD_TRIPLET/share/config.site" ./configure --enable-fuzz --with-sanitizers=fuzzer
+else
+ # See https://google.github.io/oss-fuzz/getting-started/new-project-guide/#Requirements
+ CONFIG_SITE="$PWD/depends/$BUILD_TRIPLET/share/config.site" ./configure --enable-fuzz LDFLAGS="$LIB_FUZZING_ENGINE"
+fi
make -j$(nproc)
-mv ./src/test/fuzz/fuzz $OUT/$ONLY_ONE_TARGET
-
-(
- cd assets/fuzz_seed_corpus
- for folder in ./${ONLY_ONE_TARGET}*; do
- zip --recurse-paths --quiet --junk-paths "$OUT/${folder}_seed_corpus.zip" "${folder}"
- done
-)
+# Limit to a few targets as temporary workaround for https://github.com/google/oss-fuzz/pull/5699#issuecomment-831030305
+FUZZ_TARGETS=( 'process_messages' 'asmap' )
+for fuzz_target in ${FUZZ_TARGETS[@]}; do
+ sed -i "s|std::getenv(\"FUZZ\")|\"$fuzz_target\"|g" "./src/test/fuzz/fuzz.cpp"
+ make -j$(nproc)
+ mv ./src/test/fuzz/fuzz $OUT/$fuzz_target
+ (
+ cd assets/fuzz_seed_corpus
+ zip --recurse-paths --quiet --junk-paths "$OUT/${fuzz_target}_seed_corpus.zip" "${fuzz_target}"
+ )
+done
diff --git a/projects/bitcoin-core/project.yaml b/projects/bitcoin-core/project.yaml
index 05559c5d7..f7cb974ae 100644
--- a/projects/bitcoin-core/project.yaml
+++ b/projects/bitcoin-core/project.yaml
@@ -16,3 +16,4 @@ architectures:
- x86_64
fuzzing_engines:
- libfuzzer
+ - honggfuzz