python: remove current working directory from path

Before, running Nvim in a directory containing a Python module `neovim`,
or one that is imported by it or a plugin, will load that module and not
the system one. So Nvim might be tricked into running arbitrary scripts
from the current working directory.

Fixes #1665
Fixes #2530
This commit is contained in:
Jakob Schnitzer 2015-09-11 11:14:29 +02:00
parent 5c82ea8f9f
commit c478dd5ab4
2 changed files with 2 additions and 2 deletions

View File

@ -54,7 +54,7 @@ function! s:check_interpreter(prog, major_ver, skip) abort
" Try to load neovim module, and output Python version.
let prog_ver = system([ a:prog , '-c' ,
\ 'import sys; sys.stdout.write(str(sys.version_info[0]) + '.
\ 'import sys; sys.path.remove(""); sys.stdout.write(str(sys.version_info[0]) + '.
\ '"." + str(sys.version_info[1])); '.
\ (a:major_ver == 2
\ ? 'import pkgutil; exit(pkgutil.get_loader("neovim") is None)'

View File

@ -197,7 +197,7 @@ function! s:RequirePythonHost(host)
let ver = (a:host.orig_name ==# 'python') ? 2 : 3
" Python host arguments
let args = ['-c', 'import neovim; neovim.start_host()']
let args = ['-c', 'import sys; sys.path.remove(""); import neovim; neovim.start_host()']
" Collect registered Python plugins into args
let python_plugins = remote#host#PluginsForHost(a:host.name)