--- a/lib/File/pushd.pm +++ b/lib/File/pushd.pm @@ -39,8 +39,16 @@ } my $tainted_dest; - eval { $tainted_dest = $target_dir ? abs_path($target_dir) : $orig }; - croak "Can't locate absolute path for $target_dir: $@" if $@; + if ( (defined $target_dir) && (length $target_dir) ) { + my $abs; + eval { $abs = abs_path( $target_dir ) }; + croak "Can't locate absolute path for $target_dir: $@" if $@; + croak "Can't locate absolute path for $target_dir: (abs_path returned blank)" if ! ( (defined $abs) && (length $abs) ); + $tainted_dest = $abs; + } + else { + $tainted_dest = $orig; + } my $dest; if ( $tainted_dest =~ $options->{untaint_pattern} ) {