File: stub-sudo.py

package info (click to toggle)
python-mitogen 0.3.25~a2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 6,220 kB
  • sloc: python: 21,989; sh: 183; makefile: 74; perl: 19; ansic: 18
file content (19 lines) | stat: -rwxr-xr-x 668 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python3

import json
import os
import subprocess
import sys

os.environ['ORIGINAL_ARGV'] = json.dumps(sys.argv)
os.environ['THIS_IS_STUB_SUDO'] = '1'

if os.environ.get('PREHISTORIC_SUDO'):
    # issue #481: old versions of sudo did in fact use execve, thus we must
    # have TTY handle preservation in core.py.
    os.execv(sys.executable, sys.argv[sys.argv.index('--') + 1:])
else:
    # This must be a child process and not exec() since Mitogen replaces its
    # stderr descriptor, causing the last user of the slave PTY to close it,
    # resulting in the master side indicating EIO.
    subprocess.check_call(sys.argv[sys.argv.index('--') + 1:])