summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2014-08-27 09:41:05 -0700
committerGregory P. Smith <greg@krypto.org>2014-08-27 09:41:05 -0700
commita232613679883b94ecd185c040325755b0de4c0f (patch)
tree02508f22963c965c52d460bb145e60d18eeaec30
parent7cea44d3cfa216c63c78ee3262989c1a2d563121 (diff)
parentfeac3980ced0d80dc21982d87658876644c60e72 (diff)
downloadcpython-git-a232613679883b94ecd185c040325755b0de4c0f.tar.gz
The webbrowser module now uses subprocess's start_new_session=True rather
than a potentially risky preexec_fn=os.setsid call.
-rwxr-xr-xLib/webbrowser.py15
-rw-r--r--Misc/NEWS3
2 files changed, 7 insertions, 11 deletions
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
index 9e47084a91..845f1d004c 100755
--- a/Lib/webbrowser.py
+++ b/Lib/webbrowser.py
@@ -159,10 +159,8 @@ class BackgroundBrowser(GenericBrowser):
if sys.platform[:3] == 'win':
p = subprocess.Popen(cmdline)
else:
- setsid = getattr(os, 'setsid', None)
- if not setsid:
- setsid = getattr(os, 'setpgrp', None)
- p = subprocess.Popen(cmdline, close_fds=True, preexec_fn=setsid)
+ p = subprocess.Popen(cmdline, close_fds=True,
+ start_new_session=True)
return (p.poll() is None)
except OSError:
return False
@@ -321,11 +319,6 @@ class Konqueror(BaseBrowser):
action = "openURL"
devnull = subprocess.DEVNULL
- # if possible, put browser in separate process group, so
- # keyboard interrupts don't affect browser as well as Python
- setsid = getattr(os, 'setsid', None)
- if not setsid:
- setsid = getattr(os, 'setpgrp', None)
try:
p = subprocess.Popen(["kfmclient", action, url],
@@ -343,7 +336,7 @@ class Konqueror(BaseBrowser):
p = subprocess.Popen(["konqueror", "--silent", url],
close_fds=True, stdin=devnull,
stdout=devnull, stderr=devnull,
- preexec_fn=setsid)
+ start_new_session=True)
except OSError:
# fall through to next variant
pass
@@ -356,7 +349,7 @@ class Konqueror(BaseBrowser):
p = subprocess.Popen(["kfm", "-d", url],
close_fds=True, stdin=devnull,
stdout=devnull, stderr=devnull,
- preexec_fn=setsid)
+ start_new_session=True)
except OSError:
return False
else:
diff --git a/Misc/NEWS b/Misc/NEWS
index f9ead1c8a9..82f5ba0afe 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -124,6 +124,9 @@ Core and Builtins
Library
-------
+- The webbrowser module now uses subprocess's start_new_session=True rather
+ than a potentially risky preexec_fn=os.setsid call.
+
- Issue #22042: signal.set_wakeup_fd(fd) now raises an exception if the file
descriptor is in blocking mode.