oss-fuzz.sh 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/bin/bash
  2. # Install Go manually, since oss-fuzz ships with an outdated Go version.
  3. # See https://github.com/google/oss-fuzz/pull/10643.
  4. export CXX="${CXX} -lresolv" # required by Go 1.20
  5. wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz \
  6. && mkdir temp-go \
  7. && rm -rf /root/.go/* \
  8. && tar -C temp-go/ -xzf go1.21.5.linux-amd64.tar.gz \
  9. && mv temp-go/go/* /root/.go/ \
  10. && rm -rf temp-go go1.21.5.linux-amd64.tar.gz
  11. (
  12. # fuzz qpack
  13. compile_go_fuzzer github.com/quic-go/qpack/fuzzing Fuzz qpack_fuzzer
  14. )
  15. (
  16. # fuzz quic-go
  17. compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/frames Fuzz frame_fuzzer
  18. compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/header Fuzz header_fuzzer
  19. compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/transportparameters Fuzz transportparameter_fuzzer
  20. compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/tokens Fuzz token_fuzzer
  21. compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/handshake Fuzz handshake_fuzzer
  22. if [ $SANITIZER == "coverage" ]; then
  23. # no need for corpora if coverage
  24. exit 0
  25. fi
  26. # generate seed corpora
  27. cd $GOPATH/src/github.com/quic-go/quic-go/
  28. go generate -x ./fuzzing/...
  29. zip --quiet -r $OUT/header_fuzzer_seed_corpus.zip fuzzing/header/corpus
  30. zip --quiet -r $OUT/frame_fuzzer_seed_corpus.zip fuzzing/frames/corpus
  31. zip --quiet -r $OUT/transportparameter_fuzzer_seed_corpus.zip fuzzing/transportparameters/corpus
  32. zip --quiet -r $OUT/handshake_fuzzer_seed_corpus.zip fuzzing/handshake/corpus
  33. )
  34. # for debugging
  35. ls -al $OUT