summaryrefslogtreecommitdiffstats
path: root/debian/vendor-h2o/share/h2o/setuidgid
diff options
context:
space:
mode:
Diffstat (limited to 'debian/vendor-h2o/share/h2o/setuidgid')
-rwxr-xr-xdebian/vendor-h2o/share/h2o/setuidgid46
1 files changed, 0 insertions, 46 deletions
diff --git a/debian/vendor-h2o/share/h2o/setuidgid b/debian/vendor-h2o/share/h2o/setuidgid
deleted file mode 100755
index c8e9a30..0000000
--- a/debian/vendor-h2o/share/h2o/setuidgid
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /bin/sh
-exec ${H2O_PERL:-perl} -x $0 "$@"
-#! perl
-
-use strict;
-use warnings;
-use POSIX qw(setuid setgid);
-
-die "usage: share/h2o/setuidgid username child\n"
- unless @ARGV >= 2;
-my $username = shift @ARGV;
-
-# get user entry
-my ($uid, @groups) = do {
- my @e = getpwnam($username)
- or die "unknown user: $username\n";
- +($e[2], $e[3]);
-};
-
-# add supp. groups to @groups
-setgrent;
-while (my @e = getgrent) {
- if ($e[3] && grep { $_ eq $username } split /\s+/, $e[3]) {
- push @groups, $e[2]
- unless grep { $_ == $e[2] } @groups;
- }
-}
-endgrent;
-
-# setgid
-setgid($groups[0])
- or die "setgid failed:$!";
-
-# setgroups
-$! = 0;
-$) = join " ", $groups[0], @groups;
-die "setgroups failed:$!"
- if $!;
-
-# setuid
-setuid($uid)
- or die "setuid failed:$!";
-
-# exec
-exec @ARGV
- or die "failed to exec: $ARGV[0]:$!";