eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

workflow-for-fuzzing.yml 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. name: workflow-for-fuzzing
  2. on:
  3. workflow_call:
  4. inputs:
  5. lang:
  6. required: true
  7. type: string
  8. jobs:
  9. fuzzing:
  10. runs-on: ubuntu-latest
  11. name: Fuzz synth_espeak on ${{ matrix.arch }} for ${{ inputs.lang }}
  12. strategy:
  13. matrix:
  14. arch: [x86-32, x86-64]
  15. include:
  16. - arch: x86-32
  17. archdeps: "libpcaudio0:i386 libsonic0:i386 libubsan1:i386 libc6-dbg:i386"
  18. - arch: x86-64
  19. archdeps: ""
  20. steps:
  21. - uses: actions/cache@v4
  22. with:
  23. path: /home/runner/work/espeak-ng/espeak-ng
  24. key: build-${{ matrix.arch }}-${{ github.sha }}
  25. - name: enable 32bit architecture
  26. run: sudo dpkg --add-architecture i386
  27. if: matrix.arch == 'x86-32'
  28. - name: dependencies
  29. run: sudo apt-get update && sudo apt-get install libpcaudio0 libsonic0 libubsan1 ${{ matrix.archdeps }}
  30. - name: Fuzz function synth_espeak()
  31. run: mkdir tests/fuzzing/CORPUS_DIR ; FUZZ_VOICE=${{ inputs.lang }} tests/fuzzing/synth_fuzzer.test -seed=1 -runs=10000 -max_len=4096 tests/fuzzing/CORPUS_DIR
  32. - name: Store the crash POC
  33. if: ${{ failure() }}
  34. uses: actions/upload-artifact@v4
  35. with:
  36. name: crash-${{ matrix.arch }}-${{ inputs.lang }}.1
  37. path: crash-* timeout-*
  38. - name: Fuzz function synth_espeak() with language-specific input
  39. run: cp dictsource/${{ inputs.lang }}_* tests/fuzzing/CORPUS_DIR/ || true ; FUZZ_VOICE=${{ inputs.lang }} tests/fuzzing/synth_fuzzer.test -seed=1 -runs=10000 -max_len=4096 tests/fuzzing/CORPUS_DIR
  40. - name: Store the crash POC
  41. if: ${{ failure() }}
  42. uses: actions/upload-artifact@v4
  43. with:
  44. name: crash-${{ matrix.arch }}-${{ inputs.lang }}.2
  45. path: crash-* timeout-*