1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2026-03-31 21:17:23 +02:00

management: shell out external programs in a more secure way

This commit is contained in:
Joshua Tauberer
2014-06-09 08:09:45 -04:00
parent 70bd96f643
commit cecda9cec5
4 changed files with 57 additions and 28 deletions

View File

@@ -74,4 +74,14 @@ def is_pid_valid(pid):
else: # EINVAL
raise
else:
return True
return True
def shell(method, cmd_args, env={}, capture_stderr=False):
# A safe way to execute processes.
# Some processes like apt-get require being given a sane PATH.
import subprocess
env.update({ "PATH": "/sbin:/bin:/usr/sbin:/usr/bin" })
stderr = None if not capture_stderr else subprocess.STDOUT
ret = getattr(subprocess, method)(cmd_args, env=env, stderr=stderr)
if isinstance(ret, bytes): ret = ret.decode("utf8")
return ret