Mercurial > hg
view contrib/fuzz/pyutil.cc @ 42204:723ed4402896 stable
inno: bump keyring to 18.0.1 to avoid AttributeError (issue6043)
The error seems to be harmless, because it happens after closing the connection.
For whatever reason, this isn't bundled with the Wix installer.
https://github.com/jaraco/keyring/issues/386
https://bitbucket.org/Mekk/mercurial_keyring/issues/63/attributeerror-during-process-finish-with
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 26 Apr 2019 23:52:49 -0400 |
parents | ef103c96ed33 |
children | c78f8f0720cc |
line wrap: on
line source
#include "pyutil.h" #include <string> namespace contrib { static char cpypath[8192] = "\0"; static PyObject *mainmod; static PyObject *globals; /* TODO: use Python 3 for this fuzzing? */ PyMODINIT_FUNC initparsers(void); void initpy(const char *cselfpath) { const std::string subdir = "/sanpy/lib/python2.7"; /* HACK ALERT: we need a full Python installation built without pymalloc and with ASAN, so we dump one in $OUT/sanpy/lib/python2.7. This helps us wire that up. */ std::string selfpath(cselfpath); std::string pypath; auto pos = selfpath.rfind("/"); if (pos == std::string::npos) { char wd[8192]; getcwd(wd, 8192); pypath = std::string(wd) + subdir; } else { pypath = selfpath.substr(0, pos) + subdir; } strncpy(cpypath, pypath.c_str(), pypath.size()); setenv("PYTHONPATH", cpypath, 1); setenv("PYTHONNOUSERSITE", "1", 1); /* prevent Python from looking up users in the fuzz environment */ setenv("PYTHONUSERBASE", cpypath, 1); Py_SetPythonHome(cpypath); Py_InitializeEx(0); mainmod = PyImport_AddModule("__main__"); globals = PyModule_GetDict(mainmod); initparsers(); } PyObject *pyglobals() { return globals; } } // namespace contrib