Merge pull request #109 from warner/2023-caution
Avoid Popen() of executables that don't exist
This commit is contained in:
commit
d91170a7ac
|
@ -106,24 +106,25 @@ def get_linux_distro():
|
|||
if _distname and _version:
|
||||
return (_distname, _version)
|
||||
|
||||
try:
|
||||
p = subprocess.Popen(["lsb_release", "--all"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
rc = p.wait()
|
||||
if rc == 0:
|
||||
for line in p.stdout.readlines():
|
||||
m = _distributor_id_cmdline_re.search(line)
|
||||
if m:
|
||||
_distname = m.group(1).strip()
|
||||
if _distname and _version:
|
||||
return (_distname, _version)
|
||||
if os.path.isfile("/usr/bin/lsb_release") or os.path.isfile("/bin/lsb_release"):
|
||||
try:
|
||||
p = subprocess.Popen(["lsb_release", "--all"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
rc = p.wait()
|
||||
if rc == 0:
|
||||
for line in p.stdout.readlines():
|
||||
m = _distributor_id_cmdline_re.search(line)
|
||||
if m:
|
||||
_distname = m.group(1).strip()
|
||||
if _distname and _version:
|
||||
return (_distname, _version)
|
||||
|
||||
m = _release_cmdline_re.search(p.stdout.read())
|
||||
if m:
|
||||
_version = m.group(1).strip()
|
||||
if _distname and _version:
|
||||
return (_distname, _version)
|
||||
except EnvironmentError:
|
||||
pass
|
||||
m = _release_cmdline_re.search(p.stdout.read())
|
||||
if m:
|
||||
_version = m.group(1).strip()
|
||||
if _distname and _version:
|
||||
return (_distname, _version)
|
||||
except EnvironmentError:
|
||||
pass
|
||||
|
||||
if os.path.exists("/etc/arch-release"):
|
||||
return ("Arch_Linux", "")
|
||||
|
|
|
@ -130,6 +130,7 @@ class ListAddresses(testutil.SignalMixin, unittest.TestCase):
|
|||
e.errno = errno.ENOENT
|
||||
raise e
|
||||
self.patch(subprocess, 'Popen', call_Popen)
|
||||
self.patch(os.path, 'isfile', lambda x: True)
|
||||
|
||||
def call_get_local_ip_for(target):
|
||||
if target in ("localhost", "127.0.0.1"):
|
||||
|
|
|
@ -190,6 +190,8 @@ def _synchronously_find_addresses_via_config():
|
|||
return []
|
||||
|
||||
def _query(path, args, regex):
|
||||
if not os.path.isfile(path):
|
||||
return []
|
||||
env = {'LANG': 'en_US.UTF-8'}
|
||||
TRIES = 5
|
||||
for trial in xrange(TRIES):
|
||||
|
|
Loading…
Reference in New Issue