]> err.no Git - dpkg/commitdiff
Use new-style open calls everywhere: it's safer with weird filenames.
authorRaphael Hertzog <hertzog@debian.org>
Mon, 2 Jul 2007 13:26:01 +0000 (13:26 +0000)
committerRaphael Hertzog <hertzog@debian.org>
Mon, 2 Jul 2007 13:26:01 +0000 (13:26 +0000)
scripts/dpkg-shlibdeps.pl
scripts/modules/Objdump.pm
scripts/modules/Shlibs.pm
scripts/modules/SymbolFile.pm

index 3c097b59b8f11542485a4910a5ba289d223c7375..10a1bf22d5805bb84518646a843f381b36cec499 100755 (executable)
@@ -202,10 +202,10 @@ my $fh;
 if ($stdout) {
     $fh = \*STDOUT;
 } else {
-    open(NEW,"> $varlistfile.new") ||
+    open(NEW, ">", "$varlistfile.new") ||
         syserr(sprintf(_g("open new substvars file \`%s'"), "$varlistfile.new"));
     if (-e $varlistfile) {
-       open(OLD,"< $varlistfile") || 
+       open(OLD, "<", $varlistfile) || 
            syserr(sprintf(_g("open old varlist file \`%s' for reading"), $varlistfile));
        foreach my $entry (grep { not /^\Q$varnameprefix\E:/ } (<OLD>)) {
            print(NEW $entry) ||
@@ -336,7 +336,7 @@ sub extract_from_shlibs {
     }
     # Open shlibs file
     $shlibfile = "./$shlibfile" if $shlibfile =~ m/^\s/;
-    open(SHLIBS, "< $shlibfile") || syserr(sprintf(_g("unable to open shared libs info file \`%s'"), $shlibfile));
+    open(SHLIBS, "<", $shlibfile) || syserr(sprintf(_g("unable to open shared libs info file \`%s'"), $shlibfile));
     my $dep;
     while (<SHLIBS>) {
        s/\s*\n$//; next if m/^\#/;
@@ -371,7 +371,7 @@ sub find_symbols_file {
 
 sub symfile_has_soname {
     my ($file, $soname) = @_;
-    open(SYM_FILE, "< $file") || syserr("can't open file $file");
+    open(SYM_FILE, "<", $file) || syserr("can't open file $file");
     my $result = 0;
     while (<SYM_FILE>) {
        if (/^\Q$soname\E /) {
@@ -403,8 +403,14 @@ sub my_find_library {
 sub find_packages {
     my @files = (@_);
     my $pkgmatch = {};
-    open(DPKG, "dpkg --search -- @files 2>/dev/null |") ||
-       syserr(sprintf(_g("Can't execute dpkg --search: %s"), $!));
+    my $pid = open(DPKG, "-|") || syserr(_g("cannot fork for dpkg --search"));;
+    if (!$pid) {
+       # Child process running dpkg --search and discarding errors
+       close STDERR;
+       open STDERR, ">", "/dev/null";
+       $ENV{LC_ALL} = "C";
+       exec("dpkg", "--search", "--", @files) or syserr(_g("cannot exec dpkg"));;
+    }
     while(defined($_ = <DPKG>)) {
        chomp($_);
        if (m/^local diversion |^diversion by/) {
index da93f821bf15e70b635dd8709b0588ce7afb016f..15d62464a3f98b59c00ba5686f5e59b06e02d919 100644 (file)
@@ -13,7 +13,8 @@ sub new {
 sub parse {
     my ($self, $file) = @_;
     local $ENV{LC_ALL} = 'C';
-    open(OBJDUMP, "objdump -w -p -T $file |") || syserr(sprintf(_g("Can't execute objdump: %s"), $!));
+    open(OBJDUMP, "-|", "objdump", "-w", "-p", "-T", $file) || 
+           syserr(sprintf(_g("Can't execute objdump: %s"), $!));
     my $obj = Dpkg::Shlibs::Objdump::Object->new($file);
     my $section = "none";
     while (defined($_ = <OBJDUMP>)) {
@@ -171,7 +172,7 @@ sub get_object {
 
 sub is_elf {
     my ($file) = @_;
-    open(FILE, "< $file") || main::syserr(sprintf(_g("Can't open %s for test: %s"), $file, $!));
+    open(FILE, "<", $file) || main::syserr(sprintf(_g("Can't open %s for test: %s"), $file, $!));
     my ($header, $result) = ("", 0);
     if (read(FILE, $header, 4) == 4) {
        $result = 1 if ($header =~ /^\177ELF$/);
index f029933aea4db10b6d44d088093b81cc615f28c2..2af75ac6100d5335a79ec77874d4159ba807a526 100644 (file)
@@ -29,7 +29,7 @@ parse_ldso_conf("/etc/ld.so.conf") if -e "/etc/ld.so.conf";
 sub parse_ldso_conf {
     my $file = shift;
     my $fh = new IO::File;
-    $fh->open("< $file")
+    $fh->open($file, "<")
        or main::syserr(sprintf(_g("couldn't open %s: %s"), $file, $!));
     while (<$fh>) {
        next if /^\s*$/;
index ccec332bc7cba877e67a53bd2d98d9a360350e31..ec3bf6a1e126c3ab6e0083ef32b4db6b9cc6316a 100644 (file)
@@ -34,7 +34,7 @@ sub clear_except {
 sub load {
     my ($self, $file) = @_;
     $self->{file} = $file;
-    open(SYM_FILE, "< $file") || main::syserr(sprintf(_g("Can't open %s: %s"), $file));
+    open(SYM_FILE, "<", $file) || main::syserr(sprintf(_g("Can't open %s: %s"), $file));
     my ($object);
     while (defined($_ = <SYM_FILE>)) {
        chomp($_);