| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # Copyright 2018 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.
- # Builds all fuzzing targets using firebase_ios_add_fuzz_test build rule, which
- # copies the provided dictionary and corpus to the destination directory. A
- # fuzzing target that tests xyz must be called 'firestore_xyz_fuzzer'. The copied
- # dictionary will be called 'firestore_xyz_fuzzer.dict' and its corpus
- # 'firestore_xyz_fuzzer_seed_corpus'. See cc_rules.cmake for more information.
- if(NOT FUZZING)
- return()
- endif()
- # Finds the fuzzer library that is either provided by OSS Fuzz or libFuzzer that
- # is manually built from sources.
- find_package(Fuzzer REQUIRED)
- # Use the fuzzing resources directory from the iOS fuzz tests.
- set(
- fuzzing_resources
- ${FIREBASE_SOURCE_DIR}/Firestore/Example/FuzzTests/FuzzingResources
- )
- link_libraries(firestore_core)
- # Serializer fuzzing target.
- # TODO(minafarid): Do not define a CORPUS in this target, but rather generate
- # the serializer corpus by converting the text protos from the serializer
- # corpus in the iOS FuzzingResources to binary protos. This conversion requires
- # the protoc binary that is not currently available.
- firebase_ios_add_fuzz_test(
- firestore_serializer_fuzzer
- DICTIONARY ${fuzzing_resources}/Serializer/serializer.dictionary
- CORPUS ${fuzzing_resources}/Serializer/Corpus/BinaryProtos
- serializer_fuzzer.cc
- )
- # FieldPath fuzzing target.
- firebase_ios_add_fuzz_test(
- firestore_fieldpath_fuzzer
- DICTIONARY ${fuzzing_resources}/FieldPath/fieldpath.dictionary
- CORPUS ${fuzzing_resources}/FieldPath/Corpus
- fieldpath_fuzzer.cc
- )
- # ResourcePath fuzzing target. Use the same corpus and dict as FieldPath.
- firebase_ios_add_fuzz_test(
- firestore_resourcepath_fuzzer
- DICTIONARY ${fuzzing_resources}/FieldPath/fieldpath.dictionary
- CORPUS ${fuzzing_resources}/FieldPath/Corpus
- resourcepath_fuzzer.cc
- )
- # LevelDB fuzzer.
- firebase_ios_add_fuzz_test(
- firestore_leveldb_fuzzer
- DICTIONARY ${fuzzing_resources}/LevelDb/leveldb.dictionary
- leveldb_fuzzer.cc
- )
|