|
@@ -0,0 +1,71 @@
|
|
|
+# Build the image:
|
|
|
+# $ podman build \
|
|
|
+# --tag fuzzillijs \
|
|
|
+# -f ./FuzzilliJs.dockerfile
|
|
|
+# Run the container:
|
|
|
+# $ podman run \
|
|
|
+# -it --rm \
|
|
|
+# -v ./path/to/fuzzilli-storage:/home/fuzzilli-storage:Z \
|
|
|
+# localhost/fuzzillijs
|
|
|
+# To pass more options to fuzzilli, e.g. '--resume' (use '--help' to see all options):
|
|
|
+# $ podman run \
|
|
|
+# -it --rm \
|
|
|
+# -v ./path/to/fuzzilli-storage:/home/fuzzilli-storage:Z \
|
|
|
+# -e FUZZILLI_CLI_OPTIONS='--resume' \
|
|
|
+# localhost/fuzzillijs
|
|
|
+# Invocations with `docker` should be similar or even identical.
|
|
|
+# NB: There are Dockerfiles & build scripts available for Fuzzilli-supported JS engines,
|
|
|
+# but this doesn't use the same approach - that would require a fair amount of patching
|
|
|
+# which is not worth it, unless we plan to add LibJS support to Fuzzilli upstream.
|
|
|
+
|
|
|
+FROM fedora:33 AS serenity-build
|
|
|
+
|
|
|
+WORKDIR /home
|
|
|
+RUN dnf install -y clang cmake git-core ninja-build
|
|
|
+RUN git clone --depth=1 https://github.com/SerenityOS/serenity
|
|
|
+RUN mkdir /home/serenity/Build
|
|
|
+
|
|
|
+WORKDIR /home/serenity/Build
|
|
|
+RUN sed -i 's/-Wmissing-declarations //' ../CMakeLists.txt
|
|
|
+
|
|
|
+# In file included from ../Libraries/LibGfx/Font.cpp:37:
|
|
|
+# ../Libraries/LibCore/FileStream.h:96:5: error: explicitly defaulted default constructor is implicitly deleted [-Werror,-Wdefaulted-function-deleted]
|
|
|
+# InputFileStream() = default;
|
|
|
+# ^
|
|
|
+# -------------------------------------------------------------------
|
|
|
+# I have no idea how to fix this, so I'll allow it. It's not relevant
|
|
|
+# as LibJS doesn't use LibGfx; but I suppose Lagom builds it anyway.
|
|
|
+# ¯\_(ツ)_/¯
|
|
|
+RUN CXXFLAGS="-Wno-defaulted-function-deleted" \
|
|
|
+ cmake -GNinja \
|
|
|
+ -DBUILD_LAGOM=ON \
|
|
|
+ -DENABLE_FUZZER_SANITIZER=ON \
|
|
|
+ -DCMAKE_C_COMPILER=clang \
|
|
|
+ -DCMAKE_CXX_COMPILER=clang++ \
|
|
|
+ ..
|
|
|
+RUN ninja FuzzilliJs
|
|
|
+
|
|
|
+
|
|
|
+FROM fedora:33 AS fuzzilli-build
|
|
|
+
|
|
|
+WORKDIR /home
|
|
|
+RUN dnf install -y git-core patch swift-lang
|
|
|
+RUN git clone --depth=1 https://github.com/googleprojectzero/fuzzilli
|
|
|
+
|
|
|
+WORKDIR /home/fuzzilli
|
|
|
+COPY --from=serenity-build /home/serenity/Meta/Lagom/Fuzzers/add-serenity-support-to-fuzzilli.patch .
|
|
|
+RUN patch -p1 < add-serenity-support-to-fuzzilli.patch
|
|
|
+RUN swift build -c release
|
|
|
+
|
|
|
+
|
|
|
+FROM fedora:33
|
|
|
+
|
|
|
+WORKDIR /home
|
|
|
+# This is unfortunate, but we need libswiftCore.so (and possibly other files) from the
|
|
|
+# Swift runtime. The "swift-lang-runtime" package doesn't seem to exist in Fedora 33 :/
|
|
|
+RUN dnf install -y swift-lang
|
|
|
+COPY --from=serenity-build /home/serenity/Build/Meta/Lagom/Fuzzers/FuzzilliJs .
|
|
|
+COPY --from=fuzzilli-build /home/fuzzilli/.build/x86_64-unknown-linux-gnu/release/FuzzilliCli .
|
|
|
+RUN mkdir fuzzilli-storage
|
|
|
+ENV FUZZILLI_CLI_OPTIONS ""
|
|
|
+CMD [ "sh", "-c", "./FuzzilliCli --profile=serenity --storagePath=fuzzilli-storage ${FUZZILLI_CLI_OPTIONS} ./FuzzilliJs" ]
|