Upgrade libprotobuf-mutator to e5869dd9690c3f4dfb842fb90bd07a5a9ee32172

Test: make
Change-Id: I49eb06c2370f0844f3c9ac3012674d1520ce73a3
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d9be154..a8fe9e6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -150,6 +150,11 @@
   add_subdirectory(examples EXCLUDE_FROM_ALL)
 endif()
 
+install(EXPORT libprotobuf-mutatorTargets FILE libprotobuf-mutatorTargets.cmake
+  NAMESPACE libprotobuf-mutator:: DESTINATION lib/cmake/libprotobuf-mutator)
+configure_file(libprotobuf-mutatorConfig.cmake.in libprotobuf-mutatorConfig.cmake @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprotobuf-mutatorConfig.cmake"
+  DESTINATION lib/cmake/libprotobuf-mutator)
 configure_file("libprotobuf-mutator.pc.in" "libprotobuf-mutator.pc" @ONLY)
 install(FILES "${CMAKE_BINARY_DIR}/libprotobuf-mutator.pc"
   DESTINATION ${PKG_CONFIG_PATH})
diff --git a/METADATA b/METADATA
index 424db9c..9d1a715 100644
--- a/METADATA
+++ b/METADATA
@@ -5,11 +5,11 @@
     type: GIT
     value: "https://github.com/google/libprotobuf-mutator"
   }
-  version: "8942a9ba43d8bb196230c321d46d6a137957a719"
+  version: "e5869dd9690c3f4dfb842fb90bd07a5a9ee32172"
   license_type: NOTICE
   last_upgrade_date {
     year: 2020
-    month: 8
-    day: 29
+    month: 12
+    day: 2
   }
 }
diff --git a/cmake/external/googletest.cmake b/cmake/external/googletest.cmake
index 3c3f8cf..825ff9a 100644
--- a/cmake/external/googletest.cmake
+++ b/cmake/external/googletest.cmake
@@ -50,5 +50,6 @@
                      -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
     CMAKE_ARGS ${CMAKE_ARGS}
                -DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR}
+               -DCMAKE_INSTALL_LIBDIR=lib
     BUILD_BYPRODUCTS ${GTEST_BUILD_BYPRODUCTS}
 )
diff --git a/cmake/external/protobuf.cmake b/cmake/external/protobuf.cmake
index 52a3f47..0b64519 100644
--- a/cmake/external/protobuf.cmake
+++ b/cmake/external/protobuf.cmake
@@ -68,6 +68,7 @@
     CONFIGURE_COMMAND ${CMAKE_COMMAND} ${PROTOBUF_INSTALL_DIR}/src/${PROTOBUF_TARGET}/cmake
         -G${CMAKE_GENERATOR}
         -DCMAKE_INSTALL_PREFIX=${PROTOBUF_INSTALL_DIR}
+        -DCMAKE_INSTALL_LIBDIR=lib
         -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
         -DCMAKE_POSITION_INDEPENDENT_CODE=ON
         -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
diff --git a/libprotobuf-mutator.pc.in b/libprotobuf-mutator.pc.in
index ac5224e..551dc72 100644
--- a/libprotobuf-mutator.pc.in
+++ b/libprotobuf-mutator.pc.in
@@ -1,8 +1,9 @@
 prefix=@CMAKE_INSTALL_PREFIX@
+libdir=${prefix}/lib
 includedir=${prefix}/include/libprotobuf-mutator
 
 Name: libprotobuf-mutator
 Description: randomly mutate protobuffers for fuzzing
 Version: 0
 Cflags: -I${includedir} -I${includedir}/src
-Libs: -lprotobuf-mutator-libfuzzer -lprotobuf-mutator
+Libs: -L${libdir} -lprotobuf-mutator-libfuzzer -lprotobuf-mutator
diff --git a/libprotobuf-mutatorConfig.cmake.in b/libprotobuf-mutatorConfig.cmake.in
new file mode 100644
index 0000000..f62a501
--- /dev/null
+++ b/libprotobuf-mutatorConfig.cmake.in
@@ -0,0 +1,5 @@
+include(CMakeFindDependencyMacro)
+
+find_dependency(Protobuf REQUIRED)
+
+include("${CMAKE_CURRENT_LIST_DIR}/libprotobuf-mutatorTargets.cmake")
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 19f4406..d0af1b6 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -60,5 +60,7 @@
 endif()
 
 install(TARGETS protobuf-mutator
+        EXPORT libprotobuf-mutatorTargets
         ARCHIVE DESTINATION ${LIB_DIR}
-        LIBRARY DESTINATION ${LIB_DIR})
+        LIBRARY DESTINATION ${LIB_DIR}
+        INCLUDES DESTINATION include/libprotobuf-mutator include/libprotobuf-mutator/src)
diff --git a/src/libfuzzer/CMakeLists.txt b/src/libfuzzer/CMakeLists.txt
index 8fc78e6..85e9f4d 100644
--- a/src/libfuzzer/CMakeLists.txt
+++ b/src/libfuzzer/CMakeLists.txt
@@ -23,8 +23,10 @@
                       SOVERSION 0)
 
 install(TARGETS protobuf-mutator-libfuzzer
+        EXPORT libprotobuf-mutatorTargets
         ARCHIVE DESTINATION ${LIB_DIR}
-        LIBRARY DESTINATION ${LIB_DIR})
+        LIBRARY DESTINATION ${LIB_DIR}
+        INCLUDES DESTINATION include/libprotobuf-mutator include/libprotobuf-mutator/src)
 
 if (LIB_PROTO_MUTATOR_TESTING)
   add_executable(libfuzzer_test
diff --git a/src/libfuzzer/libfuzzer_mutator.cc b/src/libfuzzer/libfuzzer_mutator.cc
index c8bca64..34d144c 100644
--- a/src/libfuzzer/libfuzzer_mutator.cc
+++ b/src/libfuzzer/libfuzzer_mutator.cc
@@ -89,9 +89,8 @@
   // any 8 bit types.
   if (!std::uniform_int_distribution<uint16_t>(0, 20)(*random())) return {};
   std::string result = value;
-  result.resize(value.size() +
-                std::max<int>(-value.size(), size_increase_hint));
-  if (result.empty()) result.push_back(0);
+  int new_size = value.size() + size_increase_hint;
+  result.resize(std::max(1, new_size));
   result.resize(LLVMFuzzerMutate(reinterpret_cast<uint8_t*>(&result[0]),
                                  value.size(), result.size()));
   return result;