##// END OF EJS Templates
tests: write commit message using file I/O...
tests: write commit message using file I/O Python 2.7 will print() \x94\x5c\x0a whereas Python 3 will print() \xc2\x94\x5c\x0a. Why, I'm not sure. It probably has to do with print() being Unicode aware on Python 3 and Python attempting some kind of encoding before emitting the output. This difference results in a different bytes making it to the commit message and the JSON output varying. We work around this by writing bytes to a commit message file. Differential Revision: https://phab.mercurial-scm.org/D5741

File last commit:

r38234:a1c0873a default
r41602:c67f55b0 default
Show More
fuzzutil.cc
27 lines | 922 B | text/x-c | CppLexer
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191 #include "fuzzutil.h"
Yuya Nishihara
fuzz: fix use of undeclared function memcpy()
r38234 #include <cstring>
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191 #include <utility>
Augie Fackler
fuzzutil: make it possible to use absl when C++17 isn't supported...
r38192 contrib::optional<two_inputs> SplitInputs(const uint8_t *Data, size_t Size)
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191 {
if (!Size) {
Augie Fackler
fuzzutil: make it possible to use absl when C++17 isn't supported...
r38192 return contrib::nullopt;
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191 }
// figure out a random point in [0, Size] to split our input.
size_t left_size = (Data[0] / 255.0) * (Size - 1);
// Copy inputs to new allocations so if bdiff over-reads
// AddressSanitizer can detect it.
std::unique_ptr<char[]> left(new char[left_size]);
Yuya Nishihara
fuzz: fix use of undeclared function memcpy()
r38234 std::memcpy(left.get(), Data + 1, left_size);
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191 // right starts at the next byte after left ends
size_t right_size = Size - (left_size + 1);
std::unique_ptr<char[]> right(new char[right_size]);
Yuya Nishihara
fuzz: fix use of undeclared function memcpy()
r38234 std::memcpy(right.get(), Data + 1 + left_size, right_size);
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191 LOG(2) << "inputs are " << left_size << " and " << right_size
<< " bytes" << std::endl;
two_inputs result = {std::move(right), right_size, std::move(left),
left_size};
return result;
}