mirror of
https://github.com/rafagafe/tiny-json.git
synced 2025-03-12 19:25:30 +00:00
Add ClusterFuzzLite workflow
Signed-off-by: David Korczynski <david@adalogics.com>
This commit is contained in:
parent
025cdde5f2
commit
b691ff34ff
8
.clusterfuzzlite/Dockerfile
Normal file
8
.clusterfuzzlite/Dockerfile
Normal file
@ -0,0 +1,8 @@
|
||||
FROM gcr.io/oss-fuzz-base/base-builder
|
||||
RUN apt-get update && apt-get install -y make autoconf automake libtool cmake \
|
||||
pkg-config curl check
|
||||
COPY . $SRC/tiny-json
|
||||
COPY .clusterfuzzlite/build.sh $SRC/build.sh
|
||||
COPY .clusterfuzzlite/*.cpp $SRC/
|
||||
COPY .clusterfuzzlite/*.c $SRC/
|
||||
WORKDIR tiny-json
|
9
.clusterfuzzlite/build.sh
Normal file
9
.clusterfuzzlite/build.sh
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
find . -name "*.c" -exec $CC $CFLAGS -I./src -c {} \;
|
||||
find . -name "*.o" -exec cp {} . \;
|
||||
|
||||
rm -f ./test*.o
|
||||
llvm-ar rcs libfuzz.a *.o
|
||||
|
||||
|
||||
$CC $CFLAGS $LIB_FUZZING_ENGINE $SRC/fuzzer.c -Wl,--whole-archive $SRC/tiny-json/libfuzz.a -Wl,--allow-multiple-definition -I$SRC/tiny-json/ -o $OUT/fuzzer
|
26
.clusterfuzzlite/fuzzer.c
Normal file
26
.clusterfuzzlite/fuzzer.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "tiny-json.h"
|
||||
|
||||
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||
// Create an input string with null-termination
|
||||
char* input_string = (char*)malloc(size + 1);
|
||||
if (input_string == NULL) {
|
||||
return 0;
|
||||
}
|
||||
memcpy(input_string, data, size);
|
||||
input_string[size] = '\0';
|
||||
|
||||
// Create an array of json_t for the second argument
|
||||
json_t json_array[10]; // Assuming max size of 10 for simplicity
|
||||
|
||||
// Call the target function with the input data
|
||||
json_create(input_string, json_array, 10);
|
||||
|
||||
free(input_string);
|
||||
return 0;
|
||||
}
|
||||
|
1
.clusterfuzzlite/project.yaml
Normal file
1
.clusterfuzzlite/project.yaml
Normal file
@ -0,0 +1 @@
|
||||
language: c
|
30
.github/workflows/cflite_pr.yml
vendored
Normal file
30
.github/workflows/cflite_pr.yml
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
name: ClusterFuzzLite PR fuzzing
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
permissions: read-all
|
||||
jobs:
|
||||
PR:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
sanitizer: [address]
|
||||
steps:
|
||||
- name: Build Fuzzers (${{ matrix.sanitizer }})
|
||||
id: build
|
||||
uses: google/clusterfuzzlite/actions/build_fuzzers@v1
|
||||
with:
|
||||
sanitizer: ${{ matrix.sanitizer }}
|
||||
language: c++
|
||||
bad-build-check: false
|
||||
- name: Run Fuzzers (${{ matrix.sanitizer }})
|
||||
id: run
|
||||
uses: google/clusterfuzzlite/actions/run_fuzzers@v1
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
fuzz-seconds: 100
|
||||
mode: 'code-change'
|
||||
report-unreproducible-crashes: false
|
||||
sanitizer: ${{ matrix.sanitizer }}
|
Loading…
Reference in New Issue
Block a user