From 2bdf29ec28fa5f5284d57672d63fdd8402030a92 Mon Sep 17 00:00:00 2001 From: Thomas Heller Date: Thu, 13 Jul 2006 17:01:14 +0000 Subject: [PATCH] Fix #1521375. When running with root priviledges, 'gcc -o /dev/null' did overwrite /dev/null. Use a temporary file instead of /dev/null. --- Lib/ctypes/util.py | 10 +++++++++- Misc/NEWS | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index d4e314a6a06..2ee2968d910 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -47,10 +47,13 @@ elif os.name == "posix": def _findLib_gcc(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;' \ - '$CC -Wl,-t -o /dev/null 2>&1 -l' + name + '$CC -Wl,-t -o ' + ccout + ' 2>&1 -l' + name try: fdout, outfile = tempfile.mkstemp() + os.close(fdout) fd = os.popen(cmd) trace = fd.read() err = fd.close() @@ -60,6 +63,11 @@ elif os.name == "posix": except OSError, e: if e.errno != errno.ENOENT: raise + try: + os.unlink(ccout) + except OSError, e: + if e.errno != errno.ENOENT: + raise res = re.search(expr, trace) if not res: return None diff --git a/Misc/NEWS b/Misc/NEWS index 516e84ccf4d..c44227b8f36 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -25,6 +25,10 @@ Library 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 default mode for loading shared libraries in ctypes.