From f43673af60286ddf97c70035ecd99e817ff846f7 Mon Sep 17 00:00:00 2001 From: "Jannis M. Hoffmann" Date: Thu, 4 Apr 2024 12:13:29 +0200 Subject: introduce moveto3 A program to move a file descriptor to 3 required for qmail-authuser and does not require a shell --- script/moveto3.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 script/moveto3.py (limited to 'script/moveto3.py') diff --git a/script/moveto3.py b/script/moveto3.py new file mode 100755 index 0000000..ae10d63 --- /dev/null +++ b/script/moveto3.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +import argparse +import os +import sys + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("-a", default="qmail-authuser", dest="pam") + ap.add_argument("fd", type=int) + ap.add_argument("prog") + ap.add_argument("args", nargs='*') + + vals = ap.parse_args() + + if vals.fd < 3: + raise ValueError(f"fd({fd}) must be 3 or greater") + + if vals.fd != 3: + os.dup2(vals.fd, 3) + os.close(vals.fd) + + os.execvp(vals.pam, [vals.pam, vals.prog] + vals.args) + + raise ValueError("should not be reachable") + + +if __name__ == '__main__': + main() -- cgit v1.2.3