Mercurial > hg
view contrib/fuzz/dirstate.cc @ 42229:5a3979529740
copies: clarify mutually exclusive cases in _chain() with a s/if/elif/
If the 'b' dict has a rename from 'x' to 'y', it shouldn't be possible
for 'x' to be both (a key) in 'a' and in 'src'. That would mean that
'x' is a file in the source commit and also a rename destination in
the intermediate commit. But we currently don't allow renaming files
onto existing files, so that shouldn't happen. So let's clarify that
by using an "elif" instead of an "if". And if we did allow renaming
files onto existing files, we should prefer to use the rename
destination in the intermediate commit as source anyway.
Differential Revision: https://phab.mercurial-scm.org/D6276
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 18 Apr 2019 00:12:56 -0700 |
parents | b444407f635b |
children | 8766728dbce6 |
line wrap: on
line source
#include <Python.h> #include <assert.h> #include <stdlib.h> #include <unistd.h> #include <string> #include "pyutil.h" extern "C" { static PyCodeObject *code; extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { contrib::initpy(*argv[0]); code = (PyCodeObject *)Py_CompileString(R"py( from parsers import parse_dirstate try: dmap = {} copymap = {} p = parse_dirstate(dmap, copymap, data) except Exception as e: pass # uncomment this print if you're editing this Python code # to debug failures. # print e )py", "fuzzer", Py_file_input); return 0; } int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { PyObject *text = PyBytes_FromStringAndSize((const char *)Data, (Py_ssize_t)Size); PyObject *locals = PyDict_New(); PyDict_SetItemString(locals, "data", text); PyObject *res = PyEval_EvalCode(code, contrib::pyglobals(), locals); if (!res) { PyErr_Print(); } Py_XDECREF(res); Py_DECREF(locals); Py_DECREF(text); return 0; // Non-zero return values are reserved for future use. } }