diff --git a/projects/dart/Dockerfile b/projects/dart/Dockerfile new file mode 100644 index 000000000..d60afcba6 --- /dev/null +++ b/projects/dart/Dockerfile @@ -0,0 +1,25 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +FROM gcr.io/oss-fuzz-base/base-builder +RUN apt-get update && apt install -y g++-multilib git python curl + +RUN git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git +ENV PATH="${SRC}/depot_tools:${PATH}" +RUN mkdir dart-sdk && cd dart-sdk && fetch dart +COPY build.sh $SRC +COPY patch.diff $SRC +WORKDIR $SRC/dart-sdk/sdk diff --git a/projects/dart/build.sh b/projects/dart/build.sh new file mode 100755 index 000000000..520b2756c --- /dev/null +++ b/projects/dart/build.sh @@ -0,0 +1,21 @@ +#!/bin/bash -eu +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +# build project +git apply ../../patch.diff +./tools/build.py --no-goma -j$(nproc) -m debug -a x64 --sanitizer=asan dart_libfuzzer +cp out/DebugASANX64/*fuzzer $OUT/ diff --git a/projects/dart/patch.diff b/projects/dart/patch.diff new file mode 100644 index 000000000..18729d5cb --- /dev/null +++ b/projects/dart/patch.diff @@ -0,0 +1,13 @@ +diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn +index 1bc82252087..68e983b4902 100644 +--- a/runtime/bin/BUILD.gn ++++ b/runtime/bin/BUILD.gn +@@ -1084,6 +1084,8 @@ if (defined(is_linux) && is_linux && defined(is_asan) && is_asan && + extra_sources = [ + "../vm/libfuzzer/dart_libfuzzer.cc", + "builtin.cc", ++ "dartdev_isolate.cc", ++ "dartdev_isolate.h", + "dfe.cc", + "dfe.h", + ] diff --git a/projects/dart/project.yaml b/projects/dart/project.yaml new file mode 100644 index 000000000..155fe23dd --- /dev/null +++ b/projects/dart/project.yaml @@ -0,0 +1,9 @@ +homepage: "https://dart.dev" +language: c++ +primary_contact: "scheglov@google.com" +auto_ccs : +- "p.antoine@catenacyber.fr" + +sanitizers: +- address +main_repo: 'https://github.com/dart-lang/sdk.git'