Skip to content

Commit

Permalink
git: workaround new requirement to use common-main
Browse files Browse the repository at this point in the history
Due to upstream changes, the Git fuzzers must now link against
common-main.o; however, this breaks the build in two ways:

1) Linking with common-main.o causes main() to have multiple
definitions, one in common-main.o and one from the fuzzing engine.

2) To avoid google#1, the Git Makefile specifically excludes common-main.o
from the fuzzer build rule.

To work around these issues, we can override FUZZ_CXXFLAGS (add
"-Wl,--allow-multiple-definition" to fix google#1) and LIB_FUZZING_ENGINE (add
"common-main.o" to fix google#2).

Once we can get a Makefile fix into Git's upstream, we can remove the
override for LIB_FUZZING_ENGINE.

However, this change causes `check_build` to fail for honggfuzz, and we
have not yet been able to diagnose the reason. So for now, we also need
to limit our engines to afl and libfuzzer.
  • Loading branch information
steadmon committed Jul 15, 2022
1 parent 5405d3b commit 85b2f29
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
5 changes: 3 additions & 2 deletions projects/git/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
################################################################################

# build fuzzers
make -j$(nproc) CC=$CC CXX=$CXX CFLAGS="$CFLAGS" FUZZ_CXXFLAGS="$CXXFLAGS" \
LIB_FUZZING_ENGINE=$LIB_FUZZING_ENGINE fuzz-all
make -j$(nproc) CC=$CC CXX=$CXX CFLAGS="$CFLAGS" \
FUZZ_CXXFLAGS="$CXXFLAGS -Wl,--allow-multiple-definition" \
LIB_FUZZING_ENGINE="common-main.o $LIB_FUZZING_ENGINE" fuzz-all

FUZZERS="fuzz-pack-headers fuzz-pack-idx fuzz-commit-graph"

Expand Down
5 changes: 5 additions & 0 deletions projects/git/project.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,8 @@ auto_ccs:
- "[email protected]"
- "[email protected]"
main_repo: 'https://github.com/git/git'

# Disable honggfuzz due to undiagnosed build failures
fuzzing_engines:
- libfuzzer
- afl

0 comments on commit 85b2f29

Please sign in to comment.