https://github.com/mgree/smoosh-fuzz
https://github.com/mgree/smoosh-fuzz
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/mgree/smoosh-fuzz
- Owner: mgree
- License: mit
- Created: 2020-02-14T22:24:39.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-11-26T00:48:38.000Z (over 5 years ago)
- Last Synced: 2025-02-09T21:43:52.726Z (over 1 year ago)
- Language: Python
- Size: 66.2 MB
- Stars: 0
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
POSIX shell fuzzer
-----------------
A grammar-based fuzzer for the POSIX language implementation that runs random shell scripts and tests for undefined behavior.
NOTE: the script assumes your OS is using the yum package manager but it shouldn't be hard to modify the script based for your distro
Running
```
./provision.sh
```
sets everything up
```
./run.sh
```
runs the harness
.travis.yml (optional)
just runs provision.sh and then make
provision.sh
installs global dependencies, e.g., afl-fuzz, gramfuzz/test-generation deps
run.sh
the command that runs afl-fuzz
/shells
Makefile
has a target for each shell we care about
goes into that shell's directory and does the whole build process
each shell has `-dep` target, i.e., `bash3-dep` `smoosh-dep`
the `-dep` target should run `yum` or whatever else to get dependencies
/bash3
/src
...
bash
/bash4
/src
...
bash
/bash5
/src
...
bash
/fish
...
fish
...
/seeds - directory with randomly generated POSIX programs go here
/output - this directory is afl-fuzz's -o directory
shells - file with a list of all of the shells we want to run:
~/shells/bash3/bash
~/shells/bash4/bash
~/shells/bash5/bash
~/shells/fish/bash
~/shells/dash/bash
~/shells/smoosh/bash
...