Mercurial > hg
view contrib/fuzz/xdiff.cc @ 46899:8b6e36e4b553
typing: add type hints to mercurial/error.py
The only slightly unusual things here are that `location` is passed to
`ParseError` and both bytes and an int (so this accepts both), and the message
passed `ProgrammingError` is immediately converted to str. Therefore it is
typed as `AnyStr`, because there are a couple of instances that are already
passed as str.
There are a couple of places where bytes are being passed to builtin exceptions
that might need to be converted to str.
Differential Revision: https://phab.mercurial-scm.org/D10274
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 25 Mar 2021 18:59:14 -0400 |
parents | d37658efbec2 |
children |
line wrap: on
line source
/* * 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"