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

This commit is contained in:
Jesus Cea 2012-10-04 13:51:43 +02:00
parent cf45325b61
commit fc990e942f
3 changed files with 11 additions and 5 deletions

View file

@ -111,7 +111,7 @@ __copyright__ = """
__version__ = '1.0.7' __version__ = '1.0.7'
import sys, os, re import sys, os, re, subprocess
### Globals & Constants ### Globals & Constants
@ -995,13 +995,15 @@ 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:

View file

@ -87,6 +87,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

View file

@ -160,6 +160,9 @@ Library
- Issue #15509: webbrowser.UnixBrowser no longer passes empty arguments to - Issue #15509: webbrowser.UnixBrowser no longer passes empty arguments to
Popen when %action substitutions produce empty strings. Popen when %action substitutions produce empty strings.
- Issue #16112: platform.architecture does not correctly escape argument to
/usr/bin/file. Patch by David Benjamin.
- Issue #12776,#11839: call argparse type function (specified by add_argument) - Issue #12776,#11839: call argparse type function (specified by add_argument)
only once. Before, the type function was called twice in the case where the only once. Before, the type function was called twice in the case where the
default was specified and the argument was given as well. This was default was specified and the argument was given as well. This was