Skip to content

Commit 31ed0c8

Browse files
author
Roman Wagner
authored
fix multiple java build issues in ClusterFuzz (#10017)
This fix aims to solve multiple build issues in ClusterFuzz related to absolute path invocation of java dependencies.
1 parent 092575a commit 31ed0c8

File tree

11 files changed

+49
-25
lines changed

11 files changed

+49
-25
lines changed

projects/apache-commons-fileupload/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,22 @@ else
5656
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
5757
cp -r $SRC/project-parent/fuzz-targets/target/test-classes $OUT/
5858
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
59-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
59+
# replace dirname with placeholder $this_dir that will be replaced at runtime
60+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
6061

6162
for fuzzer in $(find $SRC/project-parent -name '*Fuzzer.java'); do
6263
fuzzer_basename=$(basename -s .java $fuzzer)
6364

6465
# Create an execution wrapper for every fuzztarget
6566
echo "#!/bin/bash
6667
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
68+
this_dir=\$(dirname \"\$0\")
6769
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
6870
mem_settings='-Xmx1900m -Xss900k'
6971
else
7072
mem_settings='-Xmx2048m -Xss1024k'
7173
fi
72-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
74+
java -cp $RUNTIME_CLASSPATH \
7375
\$mem_settings \
7476
com.code_intelligence.jazzer.Jazzer \
7577
--target_class=com.example.$fuzzer_basename \

projects/apache-commons-text/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,22 @@ else
5858
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
5959
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/test-classes
6060
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
61-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
61+
# replace dirname with placeholder $this_dir that will be replaced at runtime
62+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
6263

6364
for fuzzer in $(find $SRC/project-parent -name '*Fuzzer.java'); do
6465
fuzzer_basename=$(basename -s .java $fuzzer)
6566

6667
# Create an execution wrapper for every fuzztarget
6768
echo "#!/bin/bash
6869
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
70+
this_dir=\$(dirname \"\$0\")
6971
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
7072
mem_settings='-Xmx1900m -Xss900k'
7173
else
7274
mem_settings='-Xmx2048m -Xss1024k'
7375
fi
74-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
76+
java -cp $RUNTIME_CLASSPATH \
7577
\$mem_settings \
7678
com.code_intelligence.jazzer.Jazzer \
7779
--target_class=com.example.$fuzzer_basename \

projects/apache-cxf/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,16 @@ else
6161
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
6262
cp -r $SRC/project-parent/fuzz-targets/target/test-classes $OUT/
6363
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
64-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
64+
# replace dirname with placeholder $this_dir that will be replaced at runtime
65+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
6566

6667
for fuzzer in $(find $SRC/project-parent/fuzz-targets -name '*Fuzzer.java'); do
6768
fuzzer_basename=$(basename -s .java $fuzzer)
6869

6970
# Create an execution wrapper for every fuzztarget
7071
echo "#!/bin/bash
7172
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
73+
this_dir=\$(dirname \"\$0\")
7274
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
7375
mem_settings='-Xmx1900m -Xss900k'
7476
else
@@ -77,7 +79,7 @@ else
7779
this_dir=\$(dirname \"\$0\")
7880
JAVA_HOME=\"\$this_dir/open-jdk-17/\" \
7981
LD_LIBRARY_PATH=\"\$this_dir/open-jdk-17/lib/server\":\$this_dir \
80-
./open-jdk-17/bin/java -cp $RUNTIME_CLASSPATH_RELATIVE \
82+
./open-jdk-17/bin/java -cp $RUNTIME_CLASSPATH \
8183
\$mem_settings \
8284
com.code_intelligence.jazzer.Jazzer \
8385
--target_class=com.example.$fuzzer_basename \

projects/g-http-java-client/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,22 @@ else
5757
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
5858
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/test-classes
5959
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
60-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
60+
# replace dirname with placeholder $this_dir that will be replaced at runtime
61+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
6162

6263
for fuzzer in $(find $SRC/project-parent -name '*Fuzzer.java'); do
6364
fuzzer_basename=$(basename -s .java $fuzzer)
6465

6566
# Create an execution wrapper for every fuzztarget
6667
echo "#!/bin/bash
6768
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
69+
this_dir=\$(dirname \"\$0\")
6870
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
6971
mem_settings='-Xmx1900m -Xss900k'
7072
else
7173
mem_settings='-Xmx2048m -Xss1024k'
7274
fi
73-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
75+
java -cp $RUNTIME_CLASSPATH \
7476
\$mem_settings \
7577
com.code_intelligence.jazzer.Jazzer \
7678
--target_class=com.example.$fuzzer_basename \

projects/gwt/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,22 +69,24 @@ else
6969
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
7070
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/
7171
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes:$(echo $ALL_JARS | xargs printf -- "$OUT/%s:")"
72-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
72+
# replace dirname with placeholder $this_dir that will be replaced at runtime
73+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
7374

7475
for fuzzer in $(find $SRC/project-parent/fuzz-targets -name '*Fuzzer.java'); do
7576
fuzzer_basename=$(basename -s .java $fuzzer)
7677

7778
# Create an execution wrapper for every fuzztarget
7879
echo "#!/bin/bash
7980
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
81+
this_dir=\$(dirname \"\$0\")
8082
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
8183
mem_settings='-Xmx1900m -Xss900k'
8284
else
8385
mem_settings='-Xmx2048m -Xss1024k'
8486
fi
8587
this_dir=\$(dirname \"\$0\")
8688
JAVA_HOME=\"\$this_dir/open-jdk-8/\" \
87-
./open-jdk-8/bin/java -cp $RUNTIME_CLASSPATH_RELATIVE \
89+
./open-jdk-8/bin/java -cp $RUNTIME_CLASSPATH \
8890
\$mem_settings \
8991
com.code_intelligence.jazzer.Jazzer \
9092
--target_class=com.example.$fuzzer_basename \

projects/itext7/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,22 @@ else
5858
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/test-classes
5959
# RUNTIME_CLASSPATH="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
6060
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
61-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
61+
# replace dirname with placeholder $this_dir that will be replaced at runtime
62+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
6263

6364
for fuzzer in $(find $SRC/project-parent -name '*Fuzzer.java'); do
6465
fuzzer_basename=$(basename -s .java $fuzzer)
6566

6667
# Create an execution wrapper for every fuzztarget
6768
echo "#!/bin/bash
6869
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
70+
this_dir=\$(dirname \"\$0\")
6971
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
7072
mem_settings='-Xmx1900m -Xss900k'
7173
else
7274
mem_settings='-Xmx2048m -Xss1024k'
7375
fi
74-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
76+
java -cp $RUNTIME_CLASSPATH \
7577
\$mem_settings \
7678
com.code_intelligence.jazzer.Jazzer \
7779
--target_class=com.example.$fuzzer_basename \

projects/jboss-logging/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,22 @@ else
5656
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
5757
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/test-classes
5858
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
59-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
59+
# replace dirname with placeholder $this_dir that will be replaced at runtime
60+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
6061

6162
for fuzzer in $(find $SRC/project-parent -name '*Fuzzer.java'); do
6263
fuzzer_basename=$(basename -s .java $fuzzer)
6364

6465
# Create an execution wrapper for every fuzztarget
6566
echo "#!/bin/bash
6667
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
68+
this_dir=\$(dirname \"\$0\")
6769
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
6870
mem_settings='-Xmx1900m -Xss900k'
6971
else
7072
mem_settings='-Xmx2048m -Xss1024k'
7173
fi
72-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
74+
java -cp $RUNTIME_CLASSPATH \
7375
\$mem_settings \
7476
com.code_intelligence.jazzer.Jazzer \
7577
--target_class=com.example.$fuzzer_basename \

projects/jetty/build.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,22 @@ else
6262
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
6363
cp -r $SRC/project-parent/fuzz-targets/target/test-classes $OUT/
6464
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
65-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
65+
# replace dirname with placeholder $this_dir that will be replaced at runtime
66+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
6667

6768
for fuzzer in $(find $SRC/project-parent/fuzz-targets -name '*Fuzzer.java' ! -name WebAppDefaultServletFuzzer.java); do
6869
fuzzer_basename=$(basename -s .java $fuzzer)
6970

7071
# Create an execution wrapper for every fuzztarget
7172
echo "#!/bin/bash
7273
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
74+
this_dir=\$(dirname \"\$0\")
7375
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
7476
mem_settings='-Xmx1900m -Xss900k'
7577
else
7678
mem_settings='-Xmx2048m -Xss1024k'
7779
fi
78-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
80+
java -cp $RUNTIME_CLASSPATH \
7981
\$mem_settings \
8082
com.code_intelligence.jazzer.Jazzer \
8183
--target_class=com.example.$fuzzer_basename \
@@ -91,7 +93,7 @@ else
9193
else
9294
mem_settings='-Xmx2048m -Xss1024k'
9395
fi
94-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
96+
java -cp $RUNTIME_CLASSPATH \
9597
\$mem_settings \
9698
com.code_intelligence.jazzer.Jazzer \
9799
--target_class=com.example.WebAppDefaultServletFuzzer \

projects/json-simple/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,20 +55,22 @@ else
5555
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
5656
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/test-classes
5757
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
58-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
58+
# replace dirname with placeholder $this_dir that will be replaced at runtime
59+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
5960

6061
for fuzzer in $(find $SRC/project-parent -name '*Fuzzer.java'); do
6162
fuzzer_basename=$(basename -s .java $fuzzer)
6263

6364
# Create an execution wrapper for every fuzztarget
6465
echo "#!/bin/bash
6566
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
67+
this_dir=\$(dirname \"\$0\")
6668
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
6769
mem_settings='-Xmx1900m -Xss900k'
6870
else
6971
mem_settings='-Xmx2048m -Xss1024k'
7072
fi
71-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
73+
java -cp $RUNTIME_CLASSPATH \
7274
\$mem_settings \
7375
com.code_intelligence.jazzer.Jazzer \
7476
--target_class=com.example.$fuzzer_basename \

projects/mvel/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,22 @@ else
5757
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
5858
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/
5959
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes"
60-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
60+
# replace dirname with placeholder $this_dir that will be replaced at runtime
61+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
6162

6263
for fuzzer in $(find $SRC/project-parent/fuzz-targets -name '*Fuzzer.java'); do
6364
fuzzer_basename=$(basename -s .java $fuzzer)
6465

6566
# Create an execution wrapper for every fuzztarget
6667
echo "#!/bin/bash
6768
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
69+
this_dir=\$(dirname \"\$0\")
6870
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
6971
mem_settings='-Xmx1900m -Xss900k'
7072
else
7173
mem_settings='-Xmx2048m -Xss1024k'
7274
fi
73-
java -cp $RUNTIME_CLASSPATH_RELATIVE \
75+
java -cp $RUNTIME_CLASSPATH \
7476
\$mem_settings \
7577
com.code_intelligence.jazzer.Jazzer \
7678
--target_class=com.example.$fuzzer_basename \

projects/opencensus-java/build.sh

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,22 @@ else
7272
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
7373
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/
7474
RUNTIME_CLASSPATH_ABSOLUTE="$(echo $ALL_JARS | xargs printf -- "$OUT/%s:"):$(cat fuzz-targets/cp.txt):$OUT/test-classes"
75-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
75+
# replace dirname with placeholder $this_dir that will be replaced at runtime
76+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
7677

7778
fuzzer_basename=$(basename -s .java $fuzzer)
7879

7980
# Create an execution wrapper for every fuzztarget
8081
echo "#!/bin/bash
8182
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
83+
this_dir=\$(dirname \"\$0\")
8284
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
8385
mem_settings='-Xmx1900m -Xss900k'
8486
else
8587
mem_settings='-Xmx2048m -Xss1024k'
8688
fi
8789
JAVA_HOME=\"\$this_dir/open-jdk-8/\" \
88-
./open-jdk-8/bin/java -cp $RUNTIME_CLASSPATH_RELATIVE \
90+
./open-jdk-8/bin/java -cp $RUNTIME_CLASSPATH \
8991
\$mem_settings \
9092
com.code_intelligence.jazzer.Jazzer \
9193
--target_class=com.example.$fuzzer_basename \
@@ -103,17 +105,19 @@ else
103105
$MVN -pl fuzz-targets dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmaven.repo.local=$OUT/m2
104106
cp -r $SRC/project-parent/fuzz-targets/target/test-classes/ $OUT/
105107
RUNTIME_CLASSPATH_ABSOLUTE="$(cat fuzz-targets/cp.txt):$OUT/test-classes:$PACKAGE_NAME:$(echo $ALL_JARS | xargs printf -- "$OUT/%s:")."
106-
RUNTIME_CLASSPATH_RELATIVE=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|.|g")
108+
# replace dirname with placeholder $this_dir that will be replaced at runtime
109+
RUNTIME_CLASSPATH=$(echo $RUNTIME_CLASSPATH_ABSOLUTE | sed "s|$OUT|\$this_dir|g")
107110

108111
echo "#!/bin/bash
109112
# LLVMFuzzerTestOneInput comment for fuzzer detection by infrastructure.
113+
this_dir=\$(dirname \"\$0\")
110114
if [[ \"\$@\" =~ (^| )-runs=[0-9]+($| ) ]]; then
111115
mem_settings='-Xmx1900m -Xss900k'
112116
else
113117
mem_settings='-Xmx2048m -Xss1024k'
114118
fi
115119
JAVA_HOME=\"\$this_dir/open-jdk-8/\" \
116-
./open-jdk-8/bin/java -cp $RUNTIME_CLASSPATH_RELATIVE \
120+
./open-jdk-8/bin/java -cp $RUNTIME_CLASSPATH \
117121
\$mem_settings \
118122
com.code_intelligence.jazzer.Jazzer \
119123
--target_class=$PACKAGE_NAME.JsonConversionFuzzer \

0 commit comments

Comments
 (0)