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

This commit is contained in:
Jesus Cea 2012-10-04 13:46:33 +02:00
parent 7c0a87f211
commit 95038fa526
3 changed files with 12 additions and 5 deletions

View File

@ -113,7 +113,7 @@ __copyright__ = """
__version__ = '1.0.7' __version__ = '1.0.7'
import sys,string,os,re import sys,string,os,re,subprocess
### Globals & Constants ### Globals & Constants
@ -1023,13 +1023,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 "%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 = string.strip(f.read()) 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

@ -77,6 +77,7 @@ Reimer Behrends
Ben Bell Ben Bell
Thomas Bellman Thomas Bellman
Alexander “Саша” Belopolsky Alexander “Саша” Belopolsky
David Benjamin
Andrew Bennetts Andrew Bennetts
Andy Bensky Andy Bensky
Bennett Benson Bennett Benson

View File

@ -143,6 +143,9 @@ Library
io.BytesIO and io.StringIO objects now raise ValueError when the object has io.BytesIO and io.StringIO objects now raise ValueError when the object has
been closed. Patch by Alessandro Moura. been closed. Patch by Alessandro Moura.
- 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