Issue 26539: frozen executables should have an empty path (original) (raw)

A frozen python executable should have an empty path, so it doesn't accidentally run something it was not supposed to.

The attached file achieves that by setting Py_NoSiteFlag and Py_IsolatedFlag in Python/frozenmain.c

It also checks for Py_FrozenFlag in Python/sysmodule.c in makepathobject and just returns an empty list if it is set.

I originally tried doing it without changing sysmodule, by calling Py_SetPath as suggested in the comment in getpath.c, but calling Py_SetPath(L"") will leave me with a path that cointains a single empty string. There is no way to set an empty path with Py_SetPath.

Other options include allowing Py_SetPath to accept NULL and making sure that NULL results in an empty list, or changing the behavior of makepathobject so an empty string will result in an empty list instead of a list with an empty string.