clixon/fuzz/cli/README.md
Olof hagsand c00162aec1 - Modified linkage constant in makefile to test for dynamic only
- CLIXON_STATIC_PLUGIN to support statically linked plugins
- Added -H option to clixon_netconf: Do not require hello before request
2021-09-25 16:36:37 +02:00

56 lines
1.6 KiB
Markdown

# Clixon fuzzing
This dir contains code for fuzzing clixon cli.
Note: cli plugins do not work.
## Prereqs
Install AFL, see [..](..)
Build and install a clixon system (in particular the backend, the CLI will be replaced)
## Build
Build clixon cli statically with the afl-clang compiler:
```
CC=/usr/bin/afl-clang-fast LINKAGE=static ./configure # Dont care about restconf
make clean
cd apps/cli
make clixon_cli
sudo make install
```
To link an example plugin properly it gets a little more complex::
- First, you need to identify which example plugins you want to link. Add these to `EXTRAS` variable
- Configure and compile those plugins, where the `clixon_plugin_init()` function is removed.
- Configure and compile the cli WITH the `EXTRAS` variable set.
Below is an example of how to do this for the main example. You can replace the main example plugins with another application:
```
CC=/usr/bin/afl-clang-fast CFLAGS="-O2 -Wall -DCLIXON_STATIC_PLUGINS" LINKAGE=static ./configure
make clean
cd example/main # Compile and install application plugins (here main example)
make clean
make
sudo make install
cd ../..
cd lib # Compile and install clixon lib
make
sudo make install
cd ..
cd apps/cli # Compile and install clixon_cli with pre-compiled plugins
EXTRAS="../../example/main/example_cli.o ../../example/main/test_cli.o" make clixon_cli
sudo make install
```
## Run tests
Run the script `runfuzz.sh` to run one test with a cli spec and an input string, eg:
```
./runfuzz.sh
```
After (or during) the test, investigate results in the output dir.