X-Git-Url: https://ruderich.org/simon/gitweb/?p=blhc%2Fblhc.git;a=blobdiff_plain;f=bin%2Fblhc;h=0cc2e6a21f5a2f37d26ec1af2cb72c593bd31df0;hp=028dfbe53190d67f1a70768098fba0c3bfb33531;hb=700aa8fd9844c0368e0785da527ca472f6ed2ea9;hpb=002738b1c775343f96d4a8228529ba4257085fd3 diff --git a/bin/blhc b/bin/blhc index 028dfbe..0cc2e6a 100755 --- a/bin/blhc +++ b/bin/blhc @@ -181,10 +181,10 @@ my @def_cppflags_fortify = ( ); my @def_ldflags = (); my @def_ldflags_relro = ( - '-Wl,(-z,)?relro', + '-Wl,(?:-z,)?relro', ); my @def_ldflags_bindnow = ( - '-Wl,(-z,)?now', + '-Wl,(?:-z,)?now', ); my @def_ldflags_pie = ( '-fPIE', @@ -198,9 +198,9 @@ my @def_ldflags_pic = ( # Renaming rules for the output so the regex parts are not visible. Also # stores string values of flag regexps above, see compile_flag_regexp(). my %flag_renames = ( - '-O(?:2|3)' => '-O2', - '-Wl,(-z,)?relro' => '-Wl,-z,relro', - '-Wl,(-z,)?now' => '-Wl,-z,now', + '-O(?:2|3)' => '-O2', + '-Wl,(?:-z,)?relro' => '-Wl,-z,relro', + '-Wl,(?:-z,)?now' => '-Wl,-z,now', ); my %exit_code = ( @@ -473,8 +473,13 @@ if ($option_all) { my $exit = 0; FILE: foreach my $file (@ARGV) { + print "checking '$file'...\n" if scalar @ARGV > 1; + open my $fh, '<', $file or die "$!: $file"; + # Architecture of this file. + my $arch = $option_arch; + # Hardening options. Not all architectures support all hardening options. my $harden_format = 1; my $harden_fortify = 1; @@ -549,9 +554,9 @@ FILE: foreach my $file (@ARGV) { last if $line =~ /^Build finished at \d{8}-\d{4}$/; # Detect architecture automatically unless overridden. - if (not $option_arch + if (not $arch and $line =~ /^dpkg-buildpackage: host architecture (.+)$/) { - $option_arch = $1; + $arch = $1; } # Ignore compiler warnings for now. @@ -655,7 +660,7 @@ FILE: foreach my $file (@ARGV) { } # Option or auto detected. - if ($option_arch) { + if ($arch) { # The following was partially copied from dpkg-dev 1.16.1.2 # (/usr/share/perl5/Dpkg/Vendor/Debian.pm, add_hardening_flags()), # copyright Raphaël Hertzog , Kees Cook @@ -663,10 +668,10 @@ FILE: foreach my $file (@ARGV) { # later. Keep it in sync. require Dpkg::Arch; - my ($abi, $os, $cpu) = Dpkg::Arch::debarch_to_debtriplet($option_arch); + my ($abi, $os, $cpu) = Dpkg::Arch::debarch_to_debtriplet($arch); # Disable unsupported hardening options. - if ($cpu =~ /^(ia64|alpha|mips|mipsel|hppa)$/ or $option_arch eq 'arm') { + if ($cpu =~ /^(ia64|alpha|mips|mipsel|hppa)$/ or $arch eq 'arm') { $harden_stack = 0; } if ($cpu =~ /^(ia64|hppa|avr32)$/) {