mirror of https://github.com/python/cpython
Fix #1521375. When running with root priviledges, 'gcc -o /dev/null'
did overwrite /dev/null. Use a temporary file instead of /dev/null.
This commit is contained in:
parent
b4dc2ef5da
commit
2bdf29ec28
|
@ -47,10 +47,13 @@ elif os.name == "posix":
|
||||||
|
|
||||||
def _findLib_gcc(name):
|
def _findLib_gcc(name):
|
||||||
expr = '[^\(\)\s]*lib%s\.[^\(\)\s]*' % name
|
expr = '[^\(\)\s]*lib%s\.[^\(\)\s]*' % name
|
||||||
|
fdout, ccout = tempfile.mkstemp()
|
||||||
|
os.close(fdout)
|
||||||
cmd = 'if type gcc &>/dev/null; then CC=gcc; else CC=cc; fi;' \
|
cmd = 'if type gcc &>/dev/null; then CC=gcc; else CC=cc; fi;' \
|
||||||
'$CC -Wl,-t -o /dev/null 2>&1 -l' + name
|
'$CC -Wl,-t -o ' + ccout + ' 2>&1 -l' + name
|
||||||
try:
|
try:
|
||||||
fdout, outfile = tempfile.mkstemp()
|
fdout, outfile = tempfile.mkstemp()
|
||||||
|
os.close(fdout)
|
||||||
fd = os.popen(cmd)
|
fd = os.popen(cmd)
|
||||||
trace = fd.read()
|
trace = fd.read()
|
||||||
err = fd.close()
|
err = fd.close()
|
||||||
|
@ -60,6 +63,11 @@ elif os.name == "posix":
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
if e.errno != errno.ENOENT:
|
if e.errno != errno.ENOENT:
|
||||||
raise
|
raise
|
||||||
|
try:
|
||||||
|
os.unlink(ccout)
|
||||||
|
except OSError, e:
|
||||||
|
if e.errno != errno.ENOENT:
|
||||||
|
raise
|
||||||
res = re.search(expr, trace)
|
res = re.search(expr, trace)
|
||||||
if not res:
|
if not res:
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -25,6 +25,10 @@ Library
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Bug #1521375: The code in ctypes.util.find_library was
|
||||||
|
run with root priviledges, it could overwrite or delete
|
||||||
|
/dev/null in certain cases; this is now fixed.
|
||||||
|
|
||||||
- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the
|
- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the
|
||||||
default mode for loading shared libraries in ctypes.
|
default mode for loading shared libraries in ctypes.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue