From 83a15478a47d39d2d5dee261cd7a71d9660c2352 Mon Sep 17 00:00:00 2001 From: Yuriy Chernyshov Date: Thu, 24 Jun 2021 19:03:07 +0300 Subject: Make uint8_t -> char conversion explicit in std::string ctor --- src/binary_format.cc | 2 +- src/text_format.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/binary_format.cc b/src/binary_format.cc index 2e9a8c7..a2026a2 100644 --- a/src/binary_format.cc +++ b/src/binary_format.cc @@ -19,7 +19,7 @@ namespace protobuf_mutator { using protobuf::Message; bool ParseBinaryMessage(const uint8_t* data, size_t size, Message* output) { - return ParseBinaryMessage({data, data + size}, output); + return ParseBinaryMessage({reinterpret_cast(data), size}, output); } bool ParseBinaryMessage(const std::string& data, protobuf::Message* output) { diff --git a/src/text_format.cc b/src/text_format.cc index 4479229..39b2fdb 100644 --- a/src/text_format.cc +++ b/src/text_format.cc @@ -22,7 +22,7 @@ using protobuf::Message; using protobuf::TextFormat; bool ParseTextMessage(const uint8_t* data, size_t size, Message* output) { - return ParseTextMessage({data, data + size}, output); + return ParseTextMessage({reinterpret_cast(data), size}, output); } bool ParseTextMessage(const std::string& data, protobuf::Message* output) { -- cgit v1.2.3 From 3e15907bd406363730321db7d08f7b6871a8c72a Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Tue, 20 Jul 2021 21:23:05 -0700 Subject: Update googletest to release-1.11.0 --- cmake/external/googletest.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/external/googletest.cmake b/cmake/external/googletest.cmake index 825ff9a..cf05c22 100644 --- a/cmake/external/googletest.cmake +++ b/cmake/external/googletest.cmake @@ -44,7 +44,7 @@ include (ExternalProject) ExternalProject_Add(${GTEST_TARGET} PREFIX ${GTEST_TARGET} GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG 3f05f651ae3621db58468153e32016bc1397800b + GIT_TAG release-1.11.0 UPDATE_COMMAND "" CMAKE_CACHE_ARGS -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} -- cgit v1.2.3 From e33a10c9db21244f6e27f13b4df02c72cc625573 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Tue, 20 Jul 2021 21:28:57 -0700 Subject: Update protobuf to v3.17.3 --- cmake/external/protobuf.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/external/protobuf.cmake b/cmake/external/protobuf.cmake index 0b64519..52a56d6 100644 --- a/cmake/external/protobuf.cmake +++ b/cmake/external/protobuf.cmake @@ -63,7 +63,7 @@ include (ExternalProject) ExternalProject_Add(${PROTOBUF_TARGET} PREFIX ${PROTOBUF_TARGET} GIT_REPOSITORY https://github.com/google/protobuf.git - GIT_TAG 214c77e1b76e63e512bd675d1c300c80438642b6 + GIT_TAG v3.17.3 UPDATE_COMMAND "" CONFIGURE_COMMAND ${CMAKE_COMMAND} ${PROTOBUF_INSTALL_DIR}/src/${PROTOBUF_TARGET}/cmake -G${CMAKE_GENERATOR} -- cgit v1.2.3 From cf988426ff6eb1752382b7c091622ccf405cf7df Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Wed, 28 Jul 2021 19:08:11 -0700 Subject: Fix nested post-processor example Fixes #164. --- README.md | 26 ++++++++++---------- examples/libfuzzer/libfuzzer_bin_example.cc | 37 ++++++++++++++++------------- examples/libfuzzer/libfuzzer_example.cc | 37 ++++++++++++++++------------- 3 files changed, 53 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index ac3c247..ef57607 100644 --- a/README.md +++ b/README.md @@ -118,20 +118,20 @@ may corrupt the reproducer so it stops triggering the bug. Note: You can add callback for any nested message and you can add multiple callbacks for the same message type. ``` -DEFINE_PROTO_FUZZER(const MyMessageType& input) { - static PostProcessorRegistration reg1 = { - [](MyMessageType* message, unsigned int seed) { - TweakMyMessage(message, seed); - }}; - static PostProcessorRegistration reg2 = { - [](MyMessageType* message, unsigned int seed) { - DifferentTweakMyMessage(message, seed); - }}; - static PostProcessorRegistration reg_nested = { - [](MyMessageType::Nested* message, unsigned int seed) { - TweakMyNestedMessage(message, seed); - }}; +static PostProcessorRegistration reg1 = { + [](MyMessageType* message, unsigned int seed) { + TweakMyMessage(message, seed); + }}; +static PostProcessorRegistration reg2 = { + [](MyMessageType* message, unsigned int seed) { + DifferentTweakMyMessage(message, seed); + }}; +static PostProcessorRegistration reg_nested = { + [](MyMessageType::Nested* message, unsigned int seed) { + TweakMyNestedMessage(message, seed); + }}; +DEFINE_PROTO_FUZZER(const MyMessageType& input) { // Code which needs to be fuzzed. ConsumeMyMessageType(input); } diff --git a/examples/libfuzzer/libfuzzer_bin_example.cc b/examples/libfuzzer/libfuzzer_bin_example.cc index 963b522..246f279 100644 --- a/examples/libfuzzer/libfuzzer_bin_example.cc +++ b/examples/libfuzzer/libfuzzer_bin_example.cc @@ -21,26 +21,29 @@ protobuf_mutator::protobuf::LogSilencer log_silincer; -protobuf_mutator::libfuzzer::PostProcessorRegistration - reg = {[](libfuzzer_example::Msg* message, unsigned int seed) { +template +using PostProcessor = + protobuf_mutator::libfuzzer::PostProcessorRegistration; + +static PostProcessor reg1 = { + [](libfuzzer_example::Msg* message, unsigned int seed) { message->set_optional_uint64( std::hash{}(message->optional_string())); + }}; - if (message->has_any()) { - auto* any = message->mutable_any(); - - // Guide mutator to usefull 'Any' types. - static const char* const expected_types[] = { - "type.googleapis.com/google.protobuf.DescriptorProto", - "type.googleapis.com/google.protobuf.FileDescriptorProto", - }; - - if (!std::count(std::begin(expected_types), std::end(expected_types), - any->type_url())) { - const size_t num = - (std::end(expected_types) - std::begin(expected_types)); - any->set_type_url(expected_types[seed % num]); - } +static PostProcessor reg2 = { + [](google::protobuf::Any* any, unsigned int seed) { + // Guide mutator to usefull 'Any' types. + static const char* const expected_types[] = { + "type.googleapis.com/google.protobuf.DescriptorProto", + "type.googleapis.com/google.protobuf.FileDescriptorProto", + }; + + if (!std::count(std::begin(expected_types), std::end(expected_types), + any->type_url())) { + const size_t num = + (std::end(expected_types) - std::begin(expected_types)); + any->set_type_url(expected_types[seed % num]); } }}; diff --git a/examples/libfuzzer/libfuzzer_example.cc b/examples/libfuzzer/libfuzzer_example.cc index aa65125..a852e98 100644 --- a/examples/libfuzzer/libfuzzer_example.cc +++ b/examples/libfuzzer/libfuzzer_example.cc @@ -21,26 +21,29 @@ protobuf_mutator::protobuf::LogSilencer log_silincer; -protobuf_mutator::libfuzzer::PostProcessorRegistration - reg = {[](libfuzzer_example::Msg* message, unsigned int seed) { +template +using PostProcessor = + protobuf_mutator::libfuzzer::PostProcessorRegistration; + +static PostProcessor reg1 = { + [](libfuzzer_example::Msg* message, unsigned int seed) { message->set_optional_uint64( std::hash{}(message->optional_string())); + }}; - if (message->has_any()) { - auto* any = message->mutable_any(); - - // Guide mutator to usefull 'Any' types. - static const char* const expected_types[] = { - "type.googleapis.com/google.protobuf.DescriptorProto", - "type.googleapis.com/google.protobuf.FileDescriptorProto", - }; - - if (!std::count(std::begin(expected_types), std::end(expected_types), - any->type_url())) { - const size_t num = - (std::end(expected_types) - std::begin(expected_types)); - any->set_type_url(expected_types[seed % num]); - } +static PostProcessor reg2 = { + [](google::protobuf::Any* any, unsigned int seed) { + // Guide mutator to usefull 'Any' types. + static const char* const expected_types[] = { + "type.googleapis.com/google.protobuf.DescriptorProto", + "type.googleapis.com/google.protobuf.FileDescriptorProto", + }; + + if (!std::count(std::begin(expected_types), std::end(expected_types), + any->type_url())) { + const size_t num = + (std::end(expected_types) - std::begin(expected_types)); + any->set_type_url(expected_types[seed % num]); } }}; -- cgit v1.2.3 From 54742e781e572a72214f3d76f4d2f9793dde9106 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Wed, 28 Jul 2021 19:13:07 -0700 Subject: Clang-format to fix cpplint warning --- src/binary_format.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/binary_format.cc b/src/binary_format.cc index a2026a2..3455788 100644 --- a/src/binary_format.cc +++ b/src/binary_format.cc @@ -19,7 +19,8 @@ namespace protobuf_mutator { using protobuf::Message; bool ParseBinaryMessage(const uint8_t* data, size_t size, Message* output) { - return ParseBinaryMessage({reinterpret_cast(data), size}, output); + return ParseBinaryMessage({reinterpret_cast(data), size}, + output); } bool ParseBinaryMessage(const std::string& data, protobuf::Message* output) { -- cgit v1.2.3 From ffd86a32874e5c08a143019aad1aaf0907294c9f Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 30 Aug 2021 15:27:22 -0700 Subject: Delete .travis.yml --- .travis.yml | 67 ------------------------------------------------------------- 1 file changed, 67 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 92a1ebe..0000000 --- a/.travis.yml +++ /dev/null @@ -1,67 +0,0 @@ -os: linux -dist: xenial -sudo: true - -language: cpp - -addons: - apt: - packages: &common_packages - - ninja-build - - liblzma-dev - - libz-dev - sources: &common_sources - - ubuntu-toolchain-r-test - -env: - global: GCC_VERSION=7 - -matrix: - include: - - env: BUILD_TYPE=Release CC_COMPILER=clang CXX_COMPILER=clang++ - addons: &clang - apt: - packages: - - *common_packages - - clang - sources: - - *common_sources - - - env: BUILD_TYPE=Debug CC_COMPILER=clang CXX_COMPILER=clang++ - addons: *clang - - - env: BUILD_TYPE=Release CC_COMPILER=gcc-${GCC_VERSION} CXX_COMPILER=g++-${GCC_VERSION} - addons: &gcc - apt: - packages: - - *common_packages - - g++-7 - - gcc-7 - sources: - - *common_sources - - - env: BUILD_TYPE=Debug CC_COMPILER=gcc-${GCC_VERSION} CXX_COMPILER=g++-${GCC_VERSION} - addons: *gcc - - - env: - install: - before_script: - script: - - travis_retry wget --quiet -O - https://raw.githubusercontent.com/cpplint/cpplint/master/cpplint.py | python - --recursive src examples - -install: - - mkdir -p deps && cd deps - - travis_retry wget --no-check-certificate --quiet -O - https://cmake.org/files/v3.12/cmake-3.12.3-Linux-x86_64.tar.gz | tar --strip-components=1 -xz - - export PATH=${TRAVIS_BUILD_DIR}/deps/bin:${PATH} - - cd - - -before_script: - - mkdir -p build && cd build - - rm -rf * - - cmake .. -GNinja -DLIB_PROTO_MUTATOR_WITH_ASAN=ON -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DCMAKE_C_COMPILER=${CC_COMPILER} -DCMAKE_CXX_COMPILER=${CXX_COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=/usr - -script: - - export ASAN_OPTIONS=detect_leaks=0 - - ninja - - ninja check - - DESTDIR="/tmp/testing/" ninja install \ No newline at end of file -- cgit v1.2.3 From a706f773b6059695944c54378fc0bde1f30e6dfc Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Fri, 20 May 2022 13:28:56 -0700 Subject: Fix libxml2 build --- cmake/external/libxml2.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/external/libxml2.cmake b/cmake/external/libxml2.cmake index c00ace2..9a54a0b 100644 --- a/cmake/external/libxml2.cmake +++ b/cmake/external/libxml2.cmake @@ -38,6 +38,7 @@ ExternalProject_Add(${LIBXML2_TARGET} UPDATE_COMMAND "" CONFIGURE_COMMAND ${LIBXML2_SRC_DIR}/autogen.sh --without-python --prefix=${LIBXML2_INSTALL_DIR} + --enable-static CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CFLAGS=${LIBXML2_CFLAGS} -- cgit v1.2.3 From 6fb07304b470964178ba2c66f235dd3c3dc06f15 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Fri, 20 May 2022 13:29:11 -0700 Subject: Update protobuf lib --- cmake/external/protobuf.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/external/protobuf.cmake b/cmake/external/protobuf.cmake index 52a56d6..c73aa1b 100644 --- a/cmake/external/protobuf.cmake +++ b/cmake/external/protobuf.cmake @@ -63,7 +63,7 @@ include (ExternalProject) ExternalProject_Add(${PROTOBUF_TARGET} PREFIX ${PROTOBUF_TARGET} GIT_REPOSITORY https://github.com/google/protobuf.git - GIT_TAG v3.17.3 + GIT_TAG v3.20.1 UPDATE_COMMAND "" CONFIGURE_COMMAND ${CMAKE_COMMAND} ${PROTOBUF_INSTALL_DIR}/src/${PROTOBUF_TARGET}/cmake -G${CMAKE_GENERATOR} -- cgit v1.2.3 From a304ec48dcf15d942607032151f7e9ee504b5dcf Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Fri, 20 May 2022 14:35:31 -0700 Subject: Support -std=c++20 --- src/libfuzzer/libfuzzer_macro.h | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/libfuzzer/libfuzzer_macro.h b/src/libfuzzer/libfuzzer_macro.h index 1a1fe0a..02ac1c0 100644 --- a/src/libfuzzer/libfuzzer_macro.h +++ b/src/libfuzzer/libfuzzer_macro.h @@ -82,14 +82,15 @@ using PostProcessorRegistration = \ protobuf_mutator::libfuzzer::PostProcessorRegistration; -#define DEFINE_PROTO_FUZZER_IMPL(use_binary, arg) \ - static void TestOneProtoInput(arg); \ - using FuzzerProtoType = std::remove_const::argument_type>::type>::type; \ - DEFINE_CUSTOM_PROTO_MUTATOR_IMPL(use_binary, FuzzerProtoType) \ - DEFINE_CUSTOM_PROTO_CROSSOVER_IMPL(use_binary, FuzzerProtoType) \ - DEFINE_TEST_ONE_PROTO_INPUT_IMPL(use_binary, FuzzerProtoType) \ - DEFINE_POST_PROCESS_PROTO_MUTATION_IMPL(FuzzerProtoType) \ +#define DEFINE_PROTO_FUZZER_IMPL(use_binary, arg) \ + static void TestOneProtoInput(arg); \ + using FuzzerProtoType = \ + protobuf_mutator::libfuzzer::macro_internal::GetFirstParam< \ + decltype(&TestOneProtoInput)>::type; \ + DEFINE_CUSTOM_PROTO_MUTATOR_IMPL(use_binary, FuzzerProtoType) \ + DEFINE_CUSTOM_PROTO_CROSSOVER_IMPL(use_binary, FuzzerProtoType) \ + DEFINE_TEST_ONE_PROTO_INPUT_IMPL(use_binary, FuzzerProtoType) \ + DEFINE_POST_PROCESS_PROTO_MUTATION_IMPL(FuzzerProtoType) \ static void TestOneProtoInput(arg) namespace protobuf_mutator { @@ -123,7 +124,20 @@ struct PostProcessorRegistration { } }; +namespace macro_internal { + +template +struct GetFirstParam; + +template +struct GetFirstParam { + using type = typename std::remove_const< + typename std::remove_reference::type>::type; +}; + +} // namespace macro_internal + } // namespace libfuzzer } // namespace protobuf_mutator -#endif // SRC_LIBFUZZER_LIBFUZZER_MACRO_H_ +#endif // SRC_LIBFUZZER_LIBFUZZER_MACRO_H_ \ No newline at end of file -- cgit v1.2.3 From ff57bf8615a5ffba49486f099c654d6e802068e8 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Thu, 29 Sep 2022 16:59:13 -0700 Subject: Switch libxml example to cmake build --- cmake/external/libxml2.cmake | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/cmake/external/libxml2.cmake b/cmake/external/libxml2.cmake index 9a54a0b..8918ee0 100644 --- a/cmake/external/libxml2.cmake +++ b/cmake/external/libxml2.cmake @@ -36,14 +36,11 @@ ExternalProject_Add(${LIBXML2_TARGET} GIT_REPOSITORY GIT_REPOSITORY https://gitlab.gnome.org/GNOME/libxml2 GIT_TAG master UPDATE_COMMAND "" - CONFIGURE_COMMAND ${LIBXML2_SRC_DIR}/autogen.sh --without-python - --prefix=${LIBXML2_INSTALL_DIR} - --enable-static - CC=${CMAKE_C_COMPILER} - CXX=${CMAKE_CXX_COMPILER} - CFLAGS=${LIBXML2_CFLAGS} - CXXFLAGS=${LIBXML2_CXXFLAGS} - BUILD_COMMAND make -j ${CPU_COUNT} all - INSTALL_COMMAND make install + CMAKE_CACHE_ARGS -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} + CMAKE_ARGS -DCMAKE_C_FLAGS=${LIBXML2_CFLAGS} -DCMAKE_CXX_FLAGS=${LIBXML2_CXXFLAGS} + -DCMAKE_INSTALL_PREFIX=${LIBXML2_INSTALL_DIR} + -DCMAKE_INSTALL_LIBDIR=lib + -DBUILD_SHARED_LIBS=OFF BUILD_BYPRODUCTS ${LIBXML2_BUILD_BYPRODUCTS} ) -- cgit v1.2.3 From 0f7111d069270a3cfdf6c9daf7af57857cdedafb Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Thu, 29 Sep 2022 17:00:36 -0700 Subject: Update googletest to 1.12 --- cmake/external/googletest.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/external/googletest.cmake b/cmake/external/googletest.cmake index cf05c22..ad0fe4a 100644 --- a/cmake/external/googletest.cmake +++ b/cmake/external/googletest.cmake @@ -44,7 +44,7 @@ include (ExternalProject) ExternalProject_Add(${GTEST_TARGET} PREFIX ${GTEST_TARGET} GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.11.0 + GIT_TAG release-1.12.0 UPDATE_COMMAND "" CMAKE_CACHE_ARGS -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} -- cgit v1.2.3 From 9d57e973eb6e651fdf6330d1ef1f86c5619afc4d Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Thu, 29 Sep 2022 17:02:32 -0700 Subject: Update protobuf to v21.7 --- cmake/external/protobuf.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/external/protobuf.cmake b/cmake/external/protobuf.cmake index c73aa1b..3dc930c 100644 --- a/cmake/external/protobuf.cmake +++ b/cmake/external/protobuf.cmake @@ -63,7 +63,7 @@ include (ExternalProject) ExternalProject_Add(${PROTOBUF_TARGET} PREFIX ${PROTOBUF_TARGET} GIT_REPOSITORY https://github.com/google/protobuf.git - GIT_TAG v3.20.1 + GIT_TAG v21.7 UPDATE_COMMAND "" CONFIGURE_COMMAND ${CMAKE_COMMAND} ${PROTOBUF_INSTALL_DIR}/src/${PROTOBUF_TARGET}/cmake -G${CMAKE_GENERATOR} -- cgit v1.2.3 From 6227b51a99fc7298c1052860992bbf5bbfceb172 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Wed, 6 Jul 2022 13:35:25 -0700 Subject: Document unsupported proto extensions --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index ef57607..ef78060 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,14 @@ string should be UTF-8, however only "proto3" enforces that. So if fuzzer is applied to "proto2" type libprotobuf-mutator will generate any strings including invalid UTF-8. If it's a "proto3" message type, only valid UTF-8 will be used. +## Extensions +Currently the library does not mutate +[extensions](https://developers.google.com/protocol-buffers/docs/proto#extensions). +This can be a problem if extension contains required fields so the library will not +be able to change the message into valid initialized state. +You can use [post processing hooks](#mutation-post-processing-experimental) to +cleanup/initialize the message as workaround. + ## Users of the library * [Chromium](https://cs.chromium.org/search/?q=DEFINE_.*._PROTO_FUZZER%5C\() * [Envoy](https://github.com/envoyproxy/envoy/search?q=DEFINE_TEXT_PROTO_FUZZER+OR+DEFINE_PROTO_FUZZER+OR+DEFINE_BINARY_PROTO_FUZZER&unscoped_q=DEFINE_TEXT_PROTO_FUZZER+OR+DEFINE_PROTO_FUZZER+OR+DEFINE_BINARY_PROTO_FUZZER&type=Code) -- cgit v1.2.3 From 15345b0c79a6f37edc08dfbae3150e8dfebe51e2 Mon Sep 17 00:00:00 2001 From: Bhargava Shastry Date: Mon, 30 May 2022 10:51:41 +0200 Subject: Add newline in libfuzzer_macro header so it does not error via clang-14 -Wnewline-eof --- src/libfuzzer/libfuzzer_macro.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libfuzzer/libfuzzer_macro.h b/src/libfuzzer/libfuzzer_macro.h index 02ac1c0..6ecca34 100644 --- a/src/libfuzzer/libfuzzer_macro.h +++ b/src/libfuzzer/libfuzzer_macro.h @@ -140,4 +140,5 @@ struct GetFirstParam { } // namespace libfuzzer } // namespace protobuf_mutator -#endif // SRC_LIBFUZZER_LIBFUZZER_MACRO_H_ \ No newline at end of file +#endif // SRC_LIBFUZZER_LIBFUZZER_MACRO_H_ + -- cgit v1.2.3 From dbe588bfb6922060e557fe5b8ee27d2923000c1a Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Thu, 29 Sep 2022 18:18:52 -0700 Subject: Remove one empty line --- src/libfuzzer/libfuzzer_macro.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libfuzzer/libfuzzer_macro.h b/src/libfuzzer/libfuzzer_macro.h index 6ecca34..b5cb201 100644 --- a/src/libfuzzer/libfuzzer_macro.h +++ b/src/libfuzzer/libfuzzer_macro.h @@ -141,4 +141,3 @@ struct GetFirstParam { } // namespace protobuf_mutator #endif // SRC_LIBFUZZER_LIBFUZZER_MACRO_H_ - -- cgit v1.2.3