Commit e8801e2e authored by Jesus Cea's avatar Jesus Cea

MERGE: Closes #16112: platform.architecture does not correctly escape argument to /usr/bin/file

parents b6bb3ad5 fc990e94
...@@ -112,7 +112,7 @@ __copyright__ = """ ...@@ -112,7 +112,7 @@ __copyright__ = """
__version__ = '1.0.7' __version__ = '1.0.7'
import collections import collections
import sys, os, re import sys, os, re, subprocess
### Globals & Constants ### Globals & Constants
...@@ -922,13 +922,16 @@ def _syscmd_file(target,default=''): ...@@ -922,13 +922,16 @@ def _syscmd_file(target,default=''):
if sys.platform in ('dos','win32','win16','os2'): if sys.platform in ('dos','win32','win16','os2'):
# XXX Others too ? # XXX Others too ?
return default return default
target = _follow_symlinks(target).replace('"', '\\"') target = _follow_symlinks(target)
try: try:
f = os.popen('file -b "%s" 2> %s' % (target, DEV_NULL)) with open(DEV_NULL) as dev_null:
proc = subprocess.Popen(['file', '-b', '--', target],
stdout=subprocess.PIPE, stderr=dev_null)
except (AttributeError,os.error): except (AttributeError,os.error):
return default return default
output = f.read().strip() output = proc.stdout.read()
rc = f.close() rc = proc.wait()
if not output or rc: if not output or rc:
return default return default
else: else:
......
...@@ -93,6 +93,7 @@ Ben Bell ...@@ -93,6 +93,7 @@ Ben Bell
Thomas Bellman Thomas Bellman
Alexander “Саша” Belopolsky Alexander “Саша” Belopolsky
Eli Bendersky Eli Bendersky
David Benjamin
Andrew Bennetts Andrew Bennetts
Andy Bensky Andy Bensky
Bennett Benson Bennett Benson
......
...@@ -37,6 +37,9 @@ Library ...@@ -37,6 +37,9 @@ Library
- Issue #16034: Fix performance regressions in the new `bz2.BZ2File` - Issue #16034: Fix performance regressions in the new `bz2.BZ2File`
implementation. Initial patch by Serhiy Storchaka. implementation. Initial patch by Serhiy Storchaka.
- Issue #16112: platform.architecture does not correctly escape argument to
/usr/bin/file. Patch by David Benjamin.
- Issue #15756: `subprocess.poll()` now properly handles `errno.ECHILD` to - Issue #15756: `subprocess.poll()` now properly handles `errno.ECHILD` to
return a returncode of 0 when the child has already exited or cannot be waited return a returncode of 0 when the child has already exited or cannot be waited
on. on.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment