diff --git a/.clusterfuzzlite/Dockerfile b/.clusterfuzzlite/Dockerfile new file mode 100644 index 0000000..f24af0f --- /dev/null +++ b/.clusterfuzzlite/Dockerfile @@ -0,0 +1,6 @@ +FROM gcr.io/oss-fuzz-base/base-builder-jvm +RUN apt-get update && apt-get install -y maven git \ + && rm -rf /var/lib/apt/lists/* +COPY . $SRC/apis-common +WORKDIR $SRC/apis-common +COPY .clusterfuzzlite/build.sh $SRC/build.sh diff --git a/.clusterfuzzlite/build.sh b/.clusterfuzzlite/build.sh new file mode 100755 index 0000000..c41aab7 --- /dev/null +++ b/.clusterfuzzlite/build.sh @@ -0,0 +1,54 @@ +#!/bin/bash -eu + + +PROJECT_ROOT="${SRC}/apis-common" +# Pinned apis-bom (same ref as CI in .github/workflows/ci.yml) +APIS_BOM_COMMIT="${APIS_BOM_COMMIT:-266abde1821756ee75bbbdcef1fc746bb66dcc3c}" + +rm -rf "${WORK}/apis-bom" +git clone https://github.com/hyphae/apis-bom.git "${WORK}/apis-bom" +pushd "${WORK}/apis-bom" >/dev/null +git checkout "${APIS_BOM_COMMIT}" +"${MVN:-mvn}" -B -DskipTests install +popd >/dev/null + +pushd "${PROJECT_ROOT}" >/dev/null +"${MVN:-mvn}" -B -DskipTests package +cp target/apis-common-*.jar "${OUT}/apis-common.jar" +mkdir -p "${OUT}/lib" +"${MVN:-mvn}" -B org.apache.maven.plugins:maven-dependency-plugin:3.6.1:copy-dependencies \ + -DoutputDirectory="${OUT}/lib" -DincludeScope=runtime +popd >/dev/null + +BUILD_CP="${OUT}/apis-common.jar" +for j in "${OUT}/lib"/*.jar; do + BUILD_CP="${BUILD_CP}:${j}" +done +BUILD_CP="${BUILD_CP}:${JAZZER_API_PATH}" + +FUZZER_SRC="${PROJECT_ROOT}/fuzz/ApisCommonFuzzer.java" +javac -cp "${BUILD_CP}" -d "${OUT}" "${FUZZER_SRC}" + +RUNTIME_CP="" +for j in "${OUT}/lib"/*.jar; do + RUNTIME_CP="${RUNTIME_CP}\$this_dir/lib/$(basename "${j}"):" +done +RUNTIME_CP="${RUNTIME_CP}\$this_dir/apis-common.jar:\$this_dir" + +cat >"${OUT}/ApisCommonFuzzer" <