build.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/bin/bash -eu
  2. build(){
  3. export CFLAGS="$1"
  4. export CXXFLAGS="$1"
  5. export LIB_FUZZING_ENGINE=-fsanitize=fuzzer
  6. mkdir build && cd build/
  7. cmake -DFUZZER=ON -DLIB_FUZZING_ENGINE="$LIB_FUZZING_ENGINE" ../../.
  8. make -j$(nproc)
  9. cd fuzzing/
  10. unzip FuzzStun_seed_corpus.zip
  11. unzip FuzzStunClient_seed_corpus.zip
  12. mkdir FuzzStun_Corpus
  13. mkdir FuzzStunClient_Corpus
  14. }
  15. run(){
  16. DIR=build/fuzzing
  17. if [ $1 == '0' ]
  18. then
  19. ./$DIR/FuzzStun $DIR/FuzzStun_Corpus/ $DIR/FuzzStun_seed_corpus
  20. else
  21. ./$DIR/FuzzStunClient $DIR/FuzzStunClient_Corpus/ $DIR/FuzzStunClient_seed_corpus
  22. fi
  23. }
  24. help(){
  25. echo "use: ./$0 ASan | UBSan | MSan | Run 0 | Run 1"
  26. }
  27. if [ -z "$1" ]
  28. then
  29. help
  30. elif [ $1 == "ASan" ]
  31. then
  32. build "-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link"
  33. elif [ "$1" == "UBSan" ]
  34. then
  35. build "-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=array-bounds,bool,builtin,enum,float-divide-by-zero,function,integer-divide-by-zero,null,object-size,return,returns-nonnull-attribute,shift,signed-integer-overflow,unsigned-integer-overflow,unreachable,vla-bound,vptr -fno-sanitize-recover=array-bounds,bool,builtin,enum,float-divide-by-zero,function,integer-divide-by-zero,null,object-size,return,returns-nonnull-attribute,shift,signed-integer-overflow,unreachable,vla-bound,vptr -fsanitize=fuzzer-no-link"
  36. elif [ "$1" == "MSan" ]
  37. then
  38. build "-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=memory -fsanitize-memory-track-origins -fsanitize=fuzzer-no-link"
  39. elif [ "$1" == "Run" ]
  40. then
  41. run $2
  42. else
  43. help
  44. fi