]> git.sur5r.net Git - i3/i3/commitdiff
use getpwuid() to resolve ~ in socket paths instead of glob()
authorMichael Stapelberg <michael@stapelberg.de>
Wed, 9 Jun 2010 22:18:50 +0000 (00:18 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Wed, 9 Jun 2010 22:18:50 +0000 (00:18 +0200)
This fixes a warning about using a tainted variable (broke the
tests with newer perl versions).

lib/AnyEvent/I3.pm

index d9a55b2b0ecc5a4f9054c4ea3e11f86e5e5aa82a..944d5f02ba36e14ae1c0ef22edc0e1bc0bd3db43 100644 (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