Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions projects/thrift-c_glib/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM gcr.io/oss-fuzz-base/base-builder

RUN apt-get update && apt-get install -y libssl-dev pkg-config autoconf automake libtool bison flex wget make zip cmake libglib2.0-dev patchelf

#Install Boost from source
RUN wget https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz && \
tar xzf boost_1_87_0.tar.gz && \
cd boost_1_87_0 && \
./bootstrap.sh --with-toolset=clang && \
./b2 clean && \
./b2 toolset=clang -j$(nproc) install && \
cd .. && \
rm -rf boost_1_87_0

COPY build.sh default.options $SRC/

RUN git clone --depth 1 https://github.com/apache/thrift.git

WORKDIR $SRC/thrift
40 changes: 40 additions & 0 deletions projects/thrift-c_glib/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash -eu
# Copyright 2025 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.
#
################################################################################

export ASAN_OPTIONS=detect_leaks=0

# Build and install the compiler (disable other languages to save time)
./bootstrap.sh
./configure --enable-static --disable-shared --with-cpp=no --with-c_glib=yes --with-python=no --with-py3=no --with-go=no --with-rs=no --with-java=no --with-nodejs=no --with-dotnet=no --with-kotlin=no
make -j$(nproc)
make install

# Build c_glib library and fuzzers
pushd lib/c_glib/test/fuzz
make check
for i in $(find . -maxdepth 1 -type f -executable -printf "%f\n"); do
cp $i $OUT/$i
cp $SRC/default.options $OUT/"$i".options;
# Set rpath so fuzzers can find libraries
patchelf --set-rpath '$ORIGIN/lib' $OUT/$i
done
popd

# Copy libraries over for the c_glib fuzzers
mkdir -p $OUT/lib
cp /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 $OUT/lib/
cp /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 $OUT/lib/
2 changes: 2 additions & 0 deletions projects/thrift-c_glib/default.options
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[libfuzzer]
detect_leaks=0
17 changes: 17 additions & 0 deletions projects/thrift-c_glib/project.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
homepage: "https://thrift.apache.org/"
language: c
primary_contact: "[email protected]"
auto_ccs:
- "[email protected]"
- "[email protected]"

fuzzing_engines:
- libfuzzer
- afl
- honggfuzz
- centipede
sanitizers:
- address
- undefined

main_repo: 'https://github.com/apache/thrift'
19 changes: 19 additions & 0 deletions projects/thrift-cpp/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM gcr.io/oss-fuzz-base/base-builder

RUN apt-get update && apt-get install -y libssl-dev pkg-config autoconf automake libtool bison flex wget make zip cmake

# Install Boost from source
RUN wget https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz && \
tar xzf boost_1_87_0.tar.gz && \
cd boost_1_87_0 && \
./bootstrap.sh --with-toolset=clang && \
./b2 clean && \
./b2 toolset=clang -j$(nproc) install && \
cd .. && \
rm -rf boost_1_87_0

COPY build.sh $SRC/

RUN git clone --depth 1 https://github.com/apache/thrift.git

WORKDIR $SRC/thrift
24 changes: 11 additions & 13 deletions projects/thrift/build.sh → projects/thrift-cpp/build.sh
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash -eux
# Copyright 2021 Google LLC
#!/bin/bash -eu
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -15,20 +15,18 @@
#
################################################################################

# build project
export ASAN_OPTIONS=detect_leaks=0

if [ "$SANITIZER" = "coverage" ]
then
cp /usr/bin/ld.gold /usr/bin/ld
fi
# Build and install the compiler (disable other languages to save time)
./bootstrap.sh
# rust fails compilation with clippy warnings
./configure --with-rs=no
./configure --enable-static --disable-shared --with-cpp=yes --with-c_glib=no --with-python=no --with-py3=no --with-go=no --with-rs=no --with-java=no --with-nodejs=no --with-dotnet=no --with-kotlin=no
make -j$(nproc)
make install

cd lib/go/test/fuzz
thrift -r --gen go:package_prefix=github.com/apache/thrift/lib/go/test/fuzz/gen-go/ ../../../../tutorial/tutorial.thrift
go mod tidy || true
compile_go_fuzzer . Fuzz fuzz_go_tutorial
# Build C++ library and fuzzers
pushd lib/cpp/test/fuzz
make check
for i in $(find . -maxdepth 1 -type f -executable -printf "%f\n"); do
cp $i $OUT/$i
done
popd
17 changes: 17 additions & 0 deletions projects/thrift-cpp/project.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
homepage: "https://thrift.apache.org/"
language: c++
primary_contact: "[email protected]"
auto_ccs:
- "[email protected]"
- "[email protected]"

fuzzing_engines:
- libfuzzer
- afl
- honggfuzz
- centipede
sanitizers:
- address
- undefined

main_repo: 'https://github.com/apache/thrift'
35 changes: 35 additions & 0 deletions projects/thrift-go/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Copyright 2025 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-go

RUN apt-get update && apt-get install -y libssl-dev pkg-config autoconf automake libtool bison flex wget make

# Install Boost from source
RUN wget https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz && \
tar xzf boost_1_87_0.tar.gz && \
cd boost_1_87_0 && \
./bootstrap.sh --with-toolset=clang && \
./b2 clean && \
./b2 toolset=clang -j$(nproc) install && \
cd .. && \
rm -rf boost_1_87_0

COPY build.sh $SRC/

RUN git clone --depth 1 https://github.com/apache/thrift.git

WORKDIR $SRC/thrift
43 changes: 43 additions & 0 deletions projects/thrift-go/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/bash -eu
# Copyright 2025 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.
#
################################################################################

export ASAN_OPTIONS=detect_leaks=0

if [[ ! -z "${CXX:-}" ]]; then
export CXX="${CXX//-lresolv/}"
fi

# Build and install the compiler...
# Disable other languages to save on compile time
./bootstrap.sh
# ... this forces go to be downloaded/installed, otherwise the configure script chokes when running go version
go version
./configure --enable-static --disable-shared --with-cpp=no --with-c_glib=no --with-python=no --with-py3=no --with-go=yes --with-rs=no --with-java=no --with-nodejs=no --with-dotnet=no --with-kotlin=no
make -j$(nproc)

pushd lib/go/test/fuzz

make gopathfuzz
compile_go_fuzzer . FuzzTutorial fuzz_tutorial
compile_go_fuzzer . FuzzParseBinary fuzz_parse_binary
compile_go_fuzzer . FuzzParseCompact fuzz_parse_compact
compile_go_fuzzer . FuzzParseJson fuzz_parse_json
compile_go_fuzzer . FuzzRoundtripBinary fuzz_roundtrip_binary
compile_go_fuzzer . FuzzRoundtripCompact fuzz_roundtrip_compact
compile_go_fuzzer . FuzzRoundtripJson fuzz_roundtrip_json

popd
14 changes: 14 additions & 0 deletions projects/thrift-go/project.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
homepage: "https://thrift.apache.org/"
language: go
primary_contact: "[email protected]"
auto_ccs:
- "[email protected]"
- "[email protected]"
- "[email protected]"

fuzzing_engines:
- libfuzzer
sanitizers:
- address

main_repo: 'https://github.com/apache/thrift'
28 changes: 28 additions & 0 deletions projects/thrift-java/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
FROM gcr.io/oss-fuzz-base/base-builder-jvm

RUN apt-get update && apt-get install -y libssl-dev pkg-config autoconf automake libtool bison flex wget make ant zip curl

# Install Boost from source
RUN wget https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz && \
tar xzf boost_1_87_0.tar.gz && \
cd boost_1_87_0 && \
./bootstrap.sh --with-toolset=clang && \
./b2 clean && \
./b2 toolset=clang -j$(nproc) install && \
cd .. && \
rm -rf boost_1_87_0

# Download and install Gradle
RUN cd /usr/local && \
curl -L https://services.gradle.org/distributions/gradle-8.13-bin.zip -o gradle-8.13-bin.zip && \
unzip gradle-8.13-bin.zip && \
rm gradle-8.13-bin.zip

ENV GRADLE_HOME=/usr/local/gradle-8.13
ENV PATH=$PATH:$GRADLE_HOME/bin

COPY build.sh $SRC/

RUN git clone --depth 1 https://github.com/apache/thrift.git

WORKDIR $SRC/thrift
71 changes: 71 additions & 0 deletions projects/thrift-java/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/bin/bash -eu
# Copyright 2025 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.
#
################################################################################

export ASAN_OPTIONS=detect_leaks=0

# Build and install the compiler (disable other languages to save time)
./bootstrap.sh
./configure --enable-static --disable-shared --with-cpp=no --with-c_glib=no --with-python=no --with-py3=no --with-go=no --with-rs=no --with-java=yes --with-nodejs=no --with-dotnet=no --with-kotlin=no
make -j$(nproc)
make install

# Build Java library and fuzzers
pushd lib/java
make check
cp build/libs/*.jar $OUT/

# Dynamically find the built jar files to be version-agnostic
MAIN_JAR=$(find build/libs -name "libthrift-*.jar" -not -name "*-test.jar" -not -name "*-sources.jar" -not -name "*-javadoc.jar" | head -n1 | xargs basename)
TEST_JAR=$(find build/libs -name "libthrift-*-test.jar" | head -n1 | xargs basename)

# Verify jars were found
if [[ -z "$MAIN_JAR" || -z "$TEST_JAR" ]]; then
echo "Error: Could not find required jar files"
echo "Main jar: $MAIN_JAR"
echo "Test jar: $TEST_JAR"
echo "Available jars:"
find build/libs -name "*.jar"
exit 1
fi

PROJECT_JARS="$MAIN_JAR $TEST_JAR"
echo "Using jars: $PROJECT_JARS"

RUNTIME_CLASSPATH=$(echo $PROJECT_JARS | xargs printf -- "$OUT/%s:"):$JAZZER_API_PATH

# Package each fuzzer
for fuzzer in $(find $SRC -name '*Fuzzer.java'); do
fuzzer_basename=$(basename -s .java $fuzzer)
echo "#!/bin/bash
# LLVMFuzzerTestOneInput for fuzzer detection.
this_dir=\$(dirname \"\$0\")
if [[ \"$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
mem_settings='-Xmx1900m:-Xss900k'
else
mem_settings='-Xmx2048m:-Xss1024k'
fi
export JVM_LD_LIBRARY_PATH=$JAVA_HOME/lib/server
export PATH=$JAVA_HOME/bin:$PATH
LD_LIBRARY_PATH=\"$JVM_LD_LIBRARY_PATH\":\$this_dir \
\$this_dir/jazzer_driver --agent_path=\$this_dir/jazzer_agent_deploy.jar \
--cp=$RUNTIME_CLASSPATH \
--target_class=org.apache.thrift.test.fuzz.$fuzzer_basename \
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there's something wrong with these fuzzers and I am not sure if I'm doing something stupid (probably am) or if there's an oss-fuzz bug.

Concretely, I can build and run these fuzzers fine locally if I do e.g.

python3 infra/helper.py build_image --cache thrift-java && python3 infra/helper.py build_fuzzers thrift-java
python3 infra/helper.py run_fuzzer thrift-java ParseJSONFuzzer

this outputs something like

➜  oss-fuzz python3 infra/helper.py run_fuzzer thrift-java ParseJSONFuzzer
INFO:__main__:Running: docker run --privileged --shm-size=2g --platform linux/amd64 --rm -i -e FUZZING_ENGINE=libfuzzer -e SANITIZER=address -e RUN_FUZZER_MODE=interactive -e HELPER=True -v /home/mhl/projects/oss-fuzz/build/out/thrift-java:/out -t gcr.io/oss-fuzz-base/base-runner run_fuzzer ParseJSONFuzzer.
vm.mmap_rnd_bits = 28
/out/ParseJSONFuzzer -rss_limit_mb=2560 -timeout=25 /tmp/ParseJSONFuzzer_corpus < /dev/null
OpenJDK 64-Bit Server VM warning: Option CriticalJNINatives was deprecated in version 16.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
INFO: Loaded 268 hooks from com.code_intelligence.jazzer.runtime.TraceCmpHooks
INFO: Loaded 5 hooks from com.code_intelligence.jazzer.runtime.TraceDivHooks
INFO: Loaded 2 hooks from com.code_intelligence.jazzer.runtime.TraceIndirHooks
INFO: Loaded 4 hooks from com.code_intelligence.jazzer.runtime.NativeLibHooks
INFO: Loaded 2 hooks from com.code_intelligence.jazzer.sanitizers.ClojureLangHooks
INFO: Loaded 5 hooks from com.code_intelligence.jazzer.sanitizers.Deserialization
INFO: Loaded 5 hooks from com.code_intelligence.jazzer.sanitizers.ExpressionLanguageInjection
INFO: Loaded 70 hooks from com.code_intelligence.jazzer.sanitizers.LdapInjection
INFO: Loaded 46 hooks from com.code_intelligence.jazzer.sanitizers.NamingContextLookup
INFO: Loaded 1 hooks from com.code_intelligence.jazzer.sanitizers.OsCommandInjection
INFO: Loaded 48 hooks from com.code_intelligence.jazzer.sanitizers.ReflectiveCall
INFO: Loaded 8 hooks from com.code_intelligence.jazzer.sanitizers.RegexInjection
INFO: Loaded 16 hooks from com.code_intelligence.jazzer.sanitizers.RegexRoadblocks
INFO: Loaded 12 hooks from com.code_intelligence.jazzer.sanitizers.ScriptEngineInjection
INFO: Loaded 3 hooks from com.code_intelligence.jazzer.sanitizers.ServerSideRequestForgery
INFO: Loaded 19 hooks from com.code_intelligence.jazzer.sanitizers.SqlInjection
INFO: Loaded 6 hooks from com.code_intelligence.jazzer.sanitizers.XPathInjection
INFO: Instrumented org.apache.thrift.test.fuzz.ParseJSONFuzzer (took 55 ms, size +13%)
INFO: Instrumented org.apache.thrift.protocol.TProtocolFactory (took 1 ms, size +0%)
INFO: using inputs from: /tmp/ParseJSONFuzzer_corpus
INFO: found LLVMFuzzerCustomMutator (0x7f8ace11da00). Disabling -len_control by default.
INFO: libFuzzer ignores flags that start with '--'
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 234785997
INFO: Loaded 1 modules   (512 inline 8-bit counters): 512 [0x56104cbd44a0, 0x56104cbd46a0),
INFO: Loaded 1 PC tables (512 PCs): 512 [0x56104cbaea60,0x56104cbb0a60),
INFO:        0 files found in /tmp/ParseJSONFuzzer_corpus
INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
INFO: Instrumented org.apache.thrift.protocol.TJSONProtocol$Factory (took 3 ms, size +11%)
INFO: Instrumented org.apache.thrift.protocol.TProtocol (took 30 ms, size +5%)
INFO: Instrumented org.apache.thrift.protocol.TWriteProtocol (took 0 ms, size +0%)
INFO: Instrumented org.apache.thrift.protocol.TReadProtocol (took 0 ms, size +0%)
INFO: Instrumented org.apache.thrift.protocol.TJSONProtocol (took 34 ms, size +16%)
INFO: Instrumented org.apache.thrift.test.fuzz.FuzzTestUtils (took 3 ms, size +16%)
INFO: Instrumented org.apache.thrift.TException (took 2 ms, size +14%)
INFO: Instrumented org.apache.thrift.transport.TTransport (took 4 ms, size +14%)
INFO: New number of coverage counters: 1024
INFO: Instrumented org.apache.thrift.transport.TMemoryInputTransport (took 4 ms, size +14%)
INFO: Instrumented org.apache.thrift.transport.TEndpointTransport (took 3 ms, size +20%)
INFO: Instrumented org.apache.thrift.transport.TMemoryBuffer (took 2 ms, size +16%)
INFO: Instrumented org.apache.thrift.TConfiguration (took 2 ms, size +9%)
INFO: Instrumented org.apache.thrift.TConfiguration$Builder (took 2 ms, size +11%)
INFO: Instrumented org.apache.thrift.transport.TTransportException (took 2 ms, size +8%)
INFO: Instrumented org.apache.thrift.protocol.TProtocolException (took 4 ms, size +8%)
INFO: Instrumented org.apache.thrift.protocol.TJSONProtocol$JSONBaseContext (took 1 ms, size +16%)
INFO: Instrumented org.apache.thrift.protocol.TJSONProtocol$JSONPairContext (took 1 ms, size +25%)
INFO: Instrumented org.apache.thrift.protocol.TJSONProtocol$JSONListContext (took 0 ms, size +22%)
INFO: Instrumented org.apache.thrift.protocol.TStruct (took 0 ms, size +18%)
INFO: Instrumented org.apache.thrift.protocol.TJSONProtocol$LookaheadReader (took 1 ms, size +24%)
INFO: New number of coverage counters: 2048

Notably, you can see org.apache.thrift.test.fuzz.ParseJSONFuzzer was instrumented!

However, if I run python3 infra/helper.py check_build thrift-java it fails, with an error like the below, complaining about the exact same class

('/tmp/not-out/tmpkrpgta8q/ParseJSONFuzzer', CompletedProcess(args=['bad_build_check', '/tmp/not-out/tmpkrpgta8q/ParseJSONFuzzer'], returncode=1, stdout=b"BAD BUILD: /tmp/not-out/tmpkrpgta8q/ParseJSONFuzzer seems to have either startup crash or exit:\nvm.mmap_rnd_bits = 28\n/tmp/not-out/tmpkrpgta8q/ParseJSONFuzzer -rss_limit_mb=2560 -timeout=25 -seed=1337 -runs=4 < /dev/null\nOpenJDK 64-Bit Server VM warning: Option CriticalJNINatives was deprecated in version 16.0 and will likely be removed in a future release.\nOpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended\nINFO: Loaded 265 hooks from com.code_intelligence.jazzer.runtime.TraceCmpHooks\nINFO: Loaded 5 hooks from com.code_intelligence.jazzer.runtime.TraceDivHooks\nINFO: Loaded 2 hooks from com.code_intelligence.jazzer.runtime.TraceIndirHooks\nINFO: Loaded 4 hooks from com.code_intelligence.jazzer.runtime.NativeLibHooks\nINFO: Loaded 2 hooks from com.code_intelligence.jazzer.sanitizers.ClojureLangHooks\nINFO: Loaded 5 hooks from com.code_intelligence.jazzer.sanitizers.Deserialization\nINFO: Loaded 5 hooks from com.code_intelligence.jazzer.sanitizers.ExpressionLanguageInjection\nINFO: Loaded 70 hooks from com.code_intelligence.jazzer.sanitizers.LdapInjection\nINFO: Loaded 46 hooks from com.code_intelligence.jazzer.sanitizers.NamingContextLookup\nINFO: Loaded 1 hooks from com.code_intelligence.jazzer.sanitizers.OsCommandInjection\nINFO: Loaded 48 hooks from com.code_intelligence.jazzer.sanitizers.ReflectiveCall\nINFO: Loaded 8 hooks from com.code_intelligence.jazzer.sanitizers.RegexInjection\nINFO: Loaded 16 hooks from com.code_intelligence.jazzer.sanitizers.RegexRoadblocks\nINFO: Loaded 12 hooks from com.code_intelligence.jazzer.sanitizers.ScriptEngineInjection\nINFO: Loaded 3 hooks from com.code_intelligence.jazzer.sanitizers.ServerSideRequestForgery\nINFO: Loaded 19 hooks from com.code_intelligence.jazzer.sanitizers.SqlInjection\nINFO: Loaded 6 hooks from com.code_intelligence.jazzer.sanitizers.XPathInjection\nERROR: 'org.apache.thrift.test.fuzz.ParseJSONFuzzer' not found on classpath:\n\n/out/libthrift-0.23.0.jar:/out/libthrift-0.23.0-test.jar::/usr/local/lib/jazzer_api_deploy.jar:/tmp/not-out/tmpkrpgta8q/jazzer_agent_deploy.jar\n\nAll required classes must be on the classpath specified via --cp.\n", stderr=b''))
BAD BUILD: /tmp/not-out/tmpkrpgta8q/ParseJSONFuzzer seems to have either startup crash or exit:
vm.mmap_rnd_bits = 28
/tmp/not-out/tmpkrpgta8q/ParseJSONFuzzer -rss_limit_mb=2560 -timeout=25 -seed=1337 -runs=4 < /dev/null
OpenJDK 64-Bit Server VM warning: Option CriticalJNINatives was deprecated in version 16.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
INFO: Loaded 265 hooks from com.code_intelligence.jazzer.runtime.TraceCmpHooks
INFO: Loaded 5 hooks from com.code_intelligence.jazzer.runtime.TraceDivHooks
INFO: Loaded 2 hooks from com.code_intelligence.jazzer.runtime.TraceIndirHooks
INFO: Loaded 4 hooks from com.code_intelligence.jazzer.runtime.NativeLibHooks
INFO: Loaded 2 hooks from com.code_intelligence.jazzer.sanitizers.ClojureLangHooks
INFO: Loaded 5 hooks from com.code_intelligence.jazzer.sanitizers.Deserialization
INFO: Loaded 5 hooks from com.code_intelligence.jazzer.sanitizers.ExpressionLanguageInjection
INFO: Loaded 70 hooks from com.code_intelligence.jazzer.sanitizers.LdapInjection
INFO: Loaded 46 hooks from com.code_intelligence.jazzer.sanitizers.NamingContextLookup
INFO: Loaded 1 hooks from com.code_intelligence.jazzer.sanitizers.OsCommandInjection
INFO: Loaded 48 hooks from com.code_intelligence.jazzer.sanitizers.ReflectiveCall
INFO: Loaded 8 hooks from com.code_intelligence.jazzer.sanitizers.RegexInjection
INFO: Loaded 16 hooks from com.code_intelligence.jazzer.sanitizers.RegexRoadblocks
INFO: Loaded 12 hooks from com.code_intelligence.jazzer.sanitizers.ScriptEngineInjection
INFO: Loaded 3 hooks from com.code_intelligence.jazzer.sanitizers.ServerSideRequestForgery
INFO: Loaded 19 hooks from com.code_intelligence.jazzer.sanitizers.SqlInjection
INFO: Loaded 6 hooks from com.code_intelligence.jazzer.sanitizers.XPathInjection
ERROR: 'org.apache.thrift.test.fuzz.ParseJSONFuzzer' not found on classpath:

/out/libthrift-0.23.0.jar:/out/libthrift-0.23.0-test.jar::/usr/local/lib/jazzer_api_deploy.jar:/tmp/not-out/tmpkrpgta8q/jazzer_agent_deploy.jar

All required classes must be on the classpath specified via --cp.

ERROR: 100.0% of fuzz targets seem to be broken. See the list above for a detailed information.

--jvm_args=\"\$mem_settings:-Djava.awt.headless=true\" \
\$@" > $OUT/$fuzzer_basename
chmod +x $OUT/$fuzzer_basename
done
popd
13 changes: 13 additions & 0 deletions projects/thrift-java/project.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
homepage: "https://thrift.apache.org/"
language: jvm
primary_contact: "[email protected]"
auto_ccs:
- "[email protected]"
- "[email protected]"

fuzzing_engines:
- libfuzzer
sanitizers:
- address

main_repo: 'https://github.com/apache/thrift'
Loading
Loading