##// END OF EJS Templates
packaging: isolate invocation of WiX to own function...
packaging: isolate invocation of WiX to own function Like we did for Inno, we want to split out the building of Mercurial from invoking the packaging tool so that we can introduce an alternate build mechanism. As part of this refactor, there are inconsequential changes to file layouts. Before, some shared files such as the WiX binaries and merge modules would be installed under build/. Now, they are installed under build/wix-*. This is to keep implementation simpler. But it also helps keep build state more isolated. Differential Revision: https://phab.mercurial-scm.org/D8474

File last commit:

r44255:7857bd9b default
r45257:11bd68a9 default
Show More
xdiff.cc
58 lines | 1.4 KiB | text/x-c | CppLexer
/*
* xdiff.cc - fuzzer harness for thirdparty/xdiff
*
* Copyright 2018, Google Inc.
*
* This software may be used and distributed according to the terms of
* the GNU General Public License, incorporated herein by reference.
*/
#include "thirdparty/xdiff/xdiff.h"
#include <inttypes.h>
#include <stdlib.h>
#include "FuzzedDataProvider.h"
extern "C" {
int LLVMFuzzerInitialize(int *argc, char ***argv)
{
return 0;
}
int hunk_consumer(long a1, long a2, long b1, long b2, void *priv)
{
// TODO: probably also test returning -1 from this when things break?
return 0;
}
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
{
// Don't allow fuzzer inputs larger than 100k, since we'll just bog
// down and not accomplish much.
if (Size > 100000) {
return 0;
}
FuzzedDataProvider provider(Data, Size);
std::string left = provider.ConsumeRandomLengthString(Size);
std::string right = provider.ConsumeRemainingBytesAsString();
mmfile_t a, b;
a.ptr = (char *)left.c_str();
a.size = left.size();
b.ptr = (char *)right.c_str();
b.size = right.size();
xpparam_t xpp = {
XDF_INDENT_HEURISTIC, /* flags */
};
xdemitconf_t xecfg = {
XDL_EMIT_BDIFFHUNK, /* flags */
hunk_consumer, /* hunk_consume_func */
};
xdemitcb_t ecb = {
NULL, /* priv */
};
xdl_diff(&a, &b, &xpp, &xecfg, &ecb);
return 0; // Non-zero return values are reserved for future use.
}
} // extern "C"