#!/usr/bin/python3

import errno
import sys
import os
import subprocess
cmdline = list(sys.argv[1:])
pid = cmdline.pop(0)
program = cmdline[0]

environ = open("/proc/%s/environ"%pid, "rb").read().split(b"\0")
environ = [ e.split(b"=",1) for e in environ if e ]
environ = [ e for e in environ if len(e) == 2 ]
userid = os.stat("/proc/%s/environ"%pid).st_uid
groupid = os.stat("/proc/%s/environ"%pid).st_gid

try:
  os.setsid()
except OSError as e:
  if e.errno != errno.EPERM:
    raise
os.setgid(groupid)
os.setuid(userid)
for k in os.environ.keys():
    del os.environ[k]
for k,v in environ:
    os.environ[k.decode("utf-8", "ignore")] = v.decode("utf-8", "ignore")

retval = os.fork()
if retval == -1:
    assert 0, "fork() fucked"
elif retval == 0:
    os.execvp(program, cmdline)
else:
    sys.exit(0)
