diff options
author | Andy Polyakov <appro@openssl.org> | 2012-10-27 23:36:43 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2012-10-27 23:36:43 +0000 |
commit | 536a16435bab53bb454aed468776591f7e3c28a9 (patch) | |
tree | 5b4789f8a9d674c29ee0e72f6c6c826ff4b17de8 /util | |
parent | 7f5bf370dbebb380897e5b27767a65ef91ec4344 (diff) |
util/fipslink.pl: further adjustments.
Diffstat (limited to 'util')
-rw-r--r-- | util/fipslink.pl | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/util/fipslink.pl b/util/fipslink.pl index 4b07036419..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" + 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/,<FD>)?1:0; + close FD; + return $ret; + } + } + return 0; + } + sub check_hash { my ($sha1_exe, $filename) = @_; |