Zhenwei Jin d6fc18e197 enable aux stack frame for aot compiler fuzz test (#4462) 6 mēneši atpakaļ
..
aot-compiler d6fc18e197 enable aux stack frame for aot compiler fuzz test (#4462) 6 mēneši atpakaļ
portal 913c2227ba build(deps): Bump esbuild, @vitejs/plugin-react and vite (#4149) 9 mēneši atpakaļ
server 23799a2cb6 Collective fix (#4413) 6 mēneši atpakaļ
wasm-mutator 7f9e49213e Enhance type checking for function types in loader and improve error handling (#4294) 7 mēneši atpakaļ
workspace d085d1ccf7 Keep fix the CMake compatibility issue (#4180) 9 mēneši atpakaļ
.env a2f3c7298f Add wasm-mutator-fuzz test (#3420) 1 gadu atpakaļ
.gitignore a2f3c7298f Add wasm-mutator-fuzz test (#3420) 1 gadu atpakaļ
CMakeLists.txt 7f9e49213e Enhance type checking for function types in loader and improve error handling (#4294) 7 mēneši atpakaļ
README.md 791e60f533 feat(fuzz): add a new fuzzing target about aot compiler (#4121) 8 mēneši atpakaļ
clang_toolchain.cmake 791e60f533 feat(fuzz): add a new fuzzing target about aot compiler (#4121) 8 mēneši atpakaļ
docker-compose.yml a2f3c7298f Add wasm-mutator-fuzz test (#3420) 1 gadu atpakaļ
smith_wasm.sh c99ae24fb6 [fuzzing] execute every exported function (#3959) 11 mēneši atpakaļ

README.md

WAMR fuzz test framework

Install wasm-tools

Download the release suitable for your specific platform from https://github.com/bytecodealliance/wasm-tools/releases/latest, unpack it, and add the executable wasm-tools to the PATH. Then, you should be able to verify that the installation was successful by using the following command:

$ wasm-tools --version
# Or learn subcommands with
$ wasm-tools help

Install clang Toolchain

Refer to: https://apt.llvm.org/ and ensure that you have clang installed.

$ clang --version

$ clang++ --version

Build

# Without custom mutator (libfuzzer modify the buffer randomly)
$ cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=./clang_toolchain.cmake -DLLVM_DIR=<llvm_install_dir>/lib/cmake/llvm

# TBC: if `wasm-tools mutate` is supported or not
# Or With custom mutator (wasm-tools mutate)
$ cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=./clang_toolchain.cmake -DLLVM_DIR=<llvm_install_dir>/lib/cmake/llvm -DCUSTOM_MUTATOR=1

# Then
$ cmake --build build

Manually generate wasm file in build

# wasm-tools smith generate some valid wasm file
# The generated wasm file is in corpus_dir under build
# N - Number of files to be generated
$ ./smith_wasm.sh N

# running
``` bash
$ ./build/wasm-mutator/wasm_mutator_fuzz ./build/CORPUS_DIR

$ ./build/aot-compiler/aot_compiler_fuzz ./build/CORPUS_DIR

Fuzzing Server

1. Installation Dependent Environment
$ cd server
$ pip install -r requirements.txt

2. Database Migration
$ python3 app/manager.py db init
$ python3 app/manager.py db migrate
$ python3 app/manager.py db upgrade

3. Change localhost to your machine's IP address
$ cd ../portal
$ vim .env   # Change localhost to your machine's IP address  # http://<ip>:16667

4. Run Server and Portal
$ cd ..   # Switch to the original directory
If you want to customize the front-end deployment port:  # defaut 9999
    $ vim .env # Please change the portal_port to the port you want to use

The server is deployed on port 16667 by default, If you want to change the server deployment port:
    $ vim .env # Please change the server_port to the port you want to use
    $ vim portal/.env # Please change the VITE_SERVER_URL to the port you want to use  # http://ip:<port>


If your network needs to set up a proxy
    $ vim .env # Change proxy to your proxy address

$ docker-compose up --build -d
Wait for completion, Access the port set by env