Nick Coghlan <ncogh...@gmail.com> added the comment:

This isn't considered a security issue, as running "python3" interactively 
behaves in exactly the same way (i.e. tracking changes to the current working 
directory for the duration of the session), and running "python3 script.py" 
adds the full path to the current directory.

In all cases, the expectation is that end users will at least enable isolated 
mode if they don't want to risk importing arbitrary code from user controlled 
directories.

    $ echo "print('Hello')" > foo.py
    $ python3 -m foo
    Hello
    $ python3 -Im foo
    /usr/bin/python3: No module named foo

However, I'm flagging this as an enhancement request for 3.8+ (with a reworded 
issue title), as the non-isolated `-m` switch algorithm for sys.path[0] 
calculation could be made more robust as follows:

1. Start out with "os.getcwd()" rather than the empty string
2. Once `__main__.__file__` has been calculated, delete sys.path[0] if __main__ 
was found somewhere else

A potentially related enhancement would be to modify directory & zipfile 
execution to only look for `__main__.py` in `sys.path[0]` rather than searching 
the whole of `sys.path` (which is what currently happens).

----------
title: Running a module with `-m` will add empty directory to sys.path -> Avoid 
adding an empty directory to sys.path when running a module with `-m`
type: security -> enhancement
versions: +Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue33053>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to