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.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 mbrola mbrola-en1 ${{ 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: |
  38. crash-*
  39. timeout-*
  40. - name: Fuzz function synth_espeak() with language-specific input
  41. 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
  42. - name: Store the crash POC
  43. if: ${{ failure() }}
  44. uses: actions/upload-artifact@v4
  45. with:
  46. name: crash-${{ matrix.arch }}-${{ inputs.lang }}.2
  47. path: |
  48. crash-*
  49. timeout-*