X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=util%2Ffipslink.pl;h=4a88fc6d77e07d36b25d95fdb7c8f782e7666d79;hp=2eb033b7c582d3564b2ecb257cda09a3a7956a13;hb=e9edfc419674f20b482a9beff9c246519f9c503e;hpb=fe5772e9d0b8ec75087baaff2f6cdd961b36e253;ds=sidebyside diff --git a/util/fipslink.pl b/util/fipslink.pl index 2eb033b7c5..4a88fc6d77 100644 --- a/util/fipslink.pl +++ b/util/fipslink.pl @@ -33,12 +33,12 @@ check_hash($sha1_exe, "fipscanister.lib"); print "Integrity check OK\n"; -if (grep /fips_premain\.obj/,@ARGV) { +if (is_premain_linked(@ARGV)) { print "$fips_cc $fips_cc_args $fips_libdir/fips_premain.c\n"; system "$fips_cc $fips_cc_args $fips_libdir/fips_premain.c"; die "First stage Compile failure" if $? != 0; } elsif (!defined($ENV{FIPS_SIG})) { - die "no fips_premain.obj"; + die "no fips_premain.obj linked"; } print "$fips_link @ARGV\n"; @@ -46,7 +46,8 @@ system "$fips_link @ARGV"; die "First stage Link failure" if $? != 0; if (defined($ENV{FIPS_SIG})) { - system "$ENV{FIPS_SIG} $fips_target\n" + print "$ENV{FIPS_SIG} $fips_target\n"; + system "$ENV{FIPS_SIG} $fips_target"; die "$ENV{FIPS_SIG} $fips_target failed" if $? != 0; exit; } @@ -71,6 +72,22 @@ print "$fips_link @ARGV\n"; system "$fips_link @ARGV"; die "Second stage Link failure" if $? != 0; +sub is_premain_linked + { + return 1 if (grep /fips_premain\.obj/,@_); + foreach (@_) + { + if (/^@(.*)/ && -f $1) + { + open FD,$1 or die "can't open $1"; + my $ret = (grep /fips_premain\.obj/,)?1:0; + close FD; + return $ret; + } + } + return 0; + } + sub check_hash { my ($sha1_exe, $filename) = @_;