summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/File/Copy.pm8
1 files changed, 2 insertions, 6 deletions
diff --git a/lib/File/Copy.pm b/lib/File/Copy.pm
index 83d7a25c67..c2fdab2e21 100644
--- a/lib/File/Copy.pm
+++ b/lib/File/Copy.pm
@@ -313,14 +313,10 @@ sub cp {
$perm &= ~06000;
}
- if ($perm & 02000) { # setgid
+ if ($perm & 02000 && $> != 0) { # if not root, setgid
my $ok = $fromstat[5] == $tostat[5]; # group must match
if ($ok) { # and we must be in group
- my $uname = (getpwuid($>))[0] || '';
- my $group = (getpwuid($>))[3];
- $ok = $group && $group == $fromstat[5] ||
- grep { $_ eq $uname }
- split /\s+/, (getgrgid($fromstat[5]))[3];
+ $ok = grep { $_ == $fromstat[5] } split /\s+/, $)
}
$perm &= ~06000 unless $ok;
}