diff options
author | 2016-04-25 10:53:13 +0000 | |
---|---|---|
committer | 2016-04-25 10:53:13 +0000 | |
commit | 933326be5b171e11d73a164d5b55c3666547883d (patch) | |
tree | f24f06ce0f6f4fee8dfd07cb993c07c35b4c0a26 | |
parent | now that sysmerge happens before us, no need to fallback on _pfetch (diff) | |
download | wireguard-openbsd-933326be5b171e11d73a164d5b55c3666547883d.tar.xz wireguard-openbsd-933326be5b171e11d73a164d5b55c3666547883d.zip |
prepare for possible pledging. We can't really drop privs if we're not
running as root, so don't even try. Also, have the environment reflect
reality in that case.
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/PackageRepository.pm | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm b/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm index 40f14418dce..209c8c93252 100644 --- a/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm +++ b/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: PackageRepository.pm,v 1.122 2016/04/25 10:45:54 espie Exp $ +# $OpenBSD: PackageRepository.pm,v 1.123 2016/04/25 10:53:13 espie Exp $ # # Copyright (c) 2003-2010 Marc Espie <espie@openbsd.org> # @@ -581,17 +581,20 @@ sub drop_privileges_and_setup_env { my $self = shift; my $user = '_pkgfetch'; - # we can't cache anything, we happen after the fork, - # right before exec - if (my (undef, undef, $uid, $gid) = getpwnam($user)) { - $( = $gid; - $) = "$gid $gid"; - $< = $uid; - $> = $uid; + if ($< == 0) { + # we can't cache anything, we happen after the fork, + # right before exec + if (my (undef, undef, $uid, $gid) = getpwnam($user)) { + $( = $gid; + $) = "$gid $gid"; + $< = $uid; + $> = $uid; + } else { + $self->{state}->fatal("Couldn't change identity: can't find #1 user", $user); + } } else { - $self->{state}->fatal("Couldn't change identity: can't find #1 user", $user); + ($user) = getpwuid($<); } - # create sanitized env for ftp my %newenv = ( HOME => '/var/empty', |