aboutsummaryrefslogtreecommitdiff
path: root/projects/envoy
diff options
context:
space:
mode:
authorasraa <asraa@google.com>2020-07-29 17:41:17 -0400
committerGitHub <noreply@github.com>2020-07-29 14:41:17 -0700
commit3bc37fc82fd205b019bc8f8ecfaa89c9072f4922 (patch)
treeaf8a27f0008bfd9e1103f7be6cf2f26ac8115800 /projects/envoy
parentb78b8222ba82347dd54a2053b697cfb4a6dea790 (diff)
downloadoss-fuzz-3bc37fc82fd205b019bc8f8ecfaa89c9072f4922.tar.gz
[envoy] Simplify finding fuzz targets by using a bazel query. (#4215)
Signed-off-by: Asra Ali <asraa@google.com>
Diffstat (limited to 'projects/envoy')
-rwxr-xr-xprojects/envoy/build.sh28
1 files changed, 11 insertions, 17 deletions
diff --git a/projects/envoy/build.sh b/projects/envoy/build.sh
index 69bce3373..ec789cb2b 100755
--- a/projects/envoy/build.sh
+++ b/projects/envoy/build.sh
@@ -18,8 +18,7 @@
export CFLAGS="$CFLAGS"
export CXXFLAGS="$CXXFLAGS"
-declare -r FUZZER_TARGETS_CC=$(find . -name *_fuzz_test.cc)
-declare -r FUZZER_TARGETS="$(for t in ${FUZZER_TARGETS_CC}; do echo "${t:2:-3}"; done)"
+declare -r FUZZER_TARGETS=$(bazel query "attr('tags', 'fuzz_target', "...") except attr('tags', 'no_fuzz', '...')")
FUZZER_DICTIONARIES="\
"
@@ -57,17 +56,10 @@ fi
declare BAZEL_BUILD_TARGETS=""
declare BAZEL_CORPUS_TARGETS=""
-declare FILTERED_FUZZER_TARGETS=""
for t in ${FUZZER_TARGETS}
do
- declare BAZEL_PATH="//"$(dirname "$t")":"$(basename "$t")
- declare TAGGED=$(bazel query "attr('tags', 'no_fuzz', ${BAZEL_PATH})")
- if [ -z "${TAGGED}" ]
- then
- FILTERED_FUZZER_TARGETS+="$t "
- BAZEL_BUILD_TARGETS+="${BAZEL_PATH}_driverless "
- BAZEL_CORPUS_TARGETS+="${BAZEL_PATH}_corpus_tar "
- fi
+ BAZEL_BUILD_TARGETS+="${t}_driverless "
+ BAZEL_CORPUS_TARGETS+="${t}_corpus_tar "
done
# Build driverless libraries.
@@ -114,10 +106,11 @@ then
fi
# Copy out test driverless binaries from bazel-bin/.
-for t in ${FILTERED_FUZZER_TARGETS}
+for t in ${FUZZER_TARGETS}
do
- TARGET_BASE="$(expr "$t" : '.*/\(.*\)_fuzz_test')"
- TARGET_DRIVERLESS=bazel-bin/"${t}"_driverless
+ TARGET_PATH=${t/://}
+ TARGET_BASE="$(expr "$TARGET_PATH" : '.*/\(.*\)_fuzz_test')"
+ TARGET_DRIVERLESS=bazel-bin/"${TARGET_PATH:2}"_driverless
echo "Copying fuzzer $t"
cp "${TARGET_DRIVERLESS}" "${OUT}"/"${TARGET_BASE}"_fuzz_test
done
@@ -126,13 +119,14 @@ done
# TODO(htuch): just use the .tar directly when
# https://github.com/google/oss-fuzz/issues/1918 is fixed.
CORPUS_UNTAR_PATH="${PWD}"/_tmp_corpus
-for t in ${FILTERED_FUZZER_TARGETS}
+for t in ${FUZZER_TARGETS}
do
echo "Extracting and zipping fuzzer $t corpus"
+ TARGET_PATH=${t/://}
rm -rf "${CORPUS_UNTAR_PATH}"
mkdir -p "${CORPUS_UNTAR_PATH}"
- tar -C "${CORPUS_UNTAR_PATH}" -xvf bazel-bin/"${t}"_corpus_tar.tar
- TARGET_BASE="$(expr "$t" : '.*/\(.*\)_fuzz_test')"
+ tar -C "${CORPUS_UNTAR_PATH}" -xvf bazel-bin/"${TARGET_PATH:2}"_corpus_tar.tar
+ TARGET_BASE="$(expr "$TARGET_PATH" : '.*/\(.*\)_fuzz_test')"
# There may be *.dict files in this folder that need to be moved into the OUT dir.
find "${CORPUS_UNTAR_PATH}" -type f -name *.dict -exec mv -n {} "${OUT}"/ \;
zip "${OUT}/${TARGET_BASE}"_fuzz_test_seed_corpus.zip \