use getpwuid() to resolve ~ in socket paths instead of glob()

This fixes a warning about using a tainted variable (broke the
tests with newer perl versions).
next
Michael Stapelberg 2010-06-10 00:18:50 +02:00
parent e656864838
commit 192ef6a827
1 changed files with 10 additions and 1 deletions

View File

@ -96,7 +96,16 @@ sub new {
$path ||= '~/.i3/ipc.sock';
bless { path => glob($path) } => $class;
# Check if we need to resolve ~
if ($path =~ /~/) {
# We use getpwuid() instead of $ENV{HOME} because the latter is tainted
# and thus produces warnings when running tests with perl -T
my $home = (getpwuid($<))[7];
die "Could not get home directory" unless $home and -d $home;
$path =~ s/~/$home/g;
}
bless { path => $path } => $class;
}
=head2 $i3->connect