mtrace: make shell commands robust against meta characters

Use the list form of the open function to avoid interpreting meta
characters in the arguments.
This commit is contained in:
Andreas Schwab 2024-06-20 14:13:01 +02:00
parent aecde502e9
commit 2a6c922f09

View File

@ -87,7 +87,7 @@ if ($#ARGV == 0) {
} }
# Set the environment variable LD_TRACE_LOADED_OBJECTS to 2 so the # Set the environment variable LD_TRACE_LOADED_OBJECTS to 2 so the
# executable is also printed. # executable is also printed.
if (open (locs, "env LD_TRACE_LOADED_OBJECTS=2 $prog |")) { if (open (locs, "-|", "env", "LD_TRACE_LOADED_OBJECTS=2", $prog)) {
while (<locs>) { while (<locs>) {
chop; chop;
if (/^.*=> (.*) .(0x[0123456789abcdef]*).$/) { if (/^.*=> (.*) .(0x[0123456789abcdef]*).$/) {
@ -104,7 +104,7 @@ if ($#ARGV == 0) {
sub addr2line { sub addr2line {
my $addr = pop(@_); my $addr = pop(@_);
my $prog = pop(@_); my $prog = pop(@_);
if (open (ADDR, "addr2line -e $prog $addr|")) { if (open (ADDR, "-|", "addr2line", "-e", $prog, $addr)) {
my $line = <ADDR>; my $line = <ADDR>;
chomp $line; chomp $line;
close (ADDR); close (ADDR);