diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/File/Copy.pm | 8 |
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; } |