Cumulative updates from HEAD.
authorAndy Polyakov <appro@openssl.org>
Mon, 29 Oct 2012 22:26:27 +0000 (22:26 +0000)
committerAndy Polyakov <appro@openssl.org>
Mon, 29 Oct 2012 22:26:27 +0000 (22:26 +0000)
e_os.h
fips/sha/Makefile
test/Makefile
util/fipslink.pl
util/mk1mf.pl
util/pl/VC-32.pl

diff --git a/e_os.h b/e_os.h
index 6fec78d5ee3a5c53c4c436b8a662168aafa376d9..efe58fb97ead4a130757c2e549d00938b2e93bc6 100644 (file)
--- a/e_os.h
+++ b/e_os.h
@@ -306,7 +306,7 @@ static unsigned int _strlen31(const char *str)
 #      undef isupper
 #      undef isxdigit
 #    endif
-#    if defined(_MSC_VER) && !defined(_DLL) && defined(stdin)
+#    if defined(_MSC_VER) && !defined(_WIN32_WCE) && !defined(_DLL) && defined(stdin)
 #      if _MSC_VER>=1300
 #        undef stdin
 #        undef stdout
@@ -332,8 +332,10 @@ static unsigned int _strlen31(const char *str)
 #      endif
 #    endif
 #  endif
-#  include <io.h>
-#  include <fcntl.h>
+#  if !defined(OPENSSL_FIPSCANISTER)
+#    include <io.h>
+#    include <fcntl.h>
+#  endif
 
 #  ifdef OPENSSL_SYS_WINCE
 #    define OPENSSL_NO_POSIX_IO
index 9bc598301f5f54321eed4f294459f716699b4c11..0878e7bf641440543e0f94df8f4349b98560d667 100644 (file)
@@ -30,7 +30,8 @@ LIB=$(TOP)/libcrypto.a
 LIBSRC=fips_sha1_selftest.c
 LIBOBJ=fips_sha1_selftest.o
 
-SRC= $(LIBSRC) fips_standalone_sha1.c
+SRC= $(LIBSRC)
+PROGS= fips_standalone_sha1.c
 
 EXHEADER=
 HEADER=        
index 2fcc78d46a8cee025f1dbaf79c31d594673daf3f..3f9770663b0c9099b4fd813d44f526fabf3170d0 100644 (file)
@@ -12,6 +12,7 @@ PERL=         perl
 # KRB5 stuff
 KRB5_INCLUDES=
 LIBKRB5=
+TEST=          fips_algvs.c
 
 PEX_LIBS=
 EX_LIBS= #-lnsl -lsocket
index 331c4568788a4b2108384db76e5a6016546b1d91..0f87f7dbc93b460485818946b76d5ec8eb2ca916 100644 (file)
@@ -27,33 +27,30 @@ if (exists $ENV{"PREMAIN_DSO_EXE"})
        $fips_premain_dso = "";
        }
 
-my $fips_sig = $ENV{"FIPS_SIG"};
-if (defined $fips_sig)
-       {
-       if ($fips_premain_dso ne "")
-               {
-               $fips_premain_dso = "$fips_sig -dso";
-               }
-       else
-               {
-               $fips_premain_dso = "$fips_sig -exe";
-               }
-       }
-
 check_hash($sha1_exe, "fips_premain.c");
 check_hash($sha1_exe, "fipscanister.lib");
 
 
 print "Integrity check OK\n";
 
-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;
+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 linked";
+}
 
 print "$fips_link @ARGV\n";
 system "$fips_link @ARGV";
 die "First stage Link failure" if $? != 0;
 
+if (defined($ENV{FIPS_SIG})) {
+       print "$ENV{FIPS_SIG} $fips_target\n";
+       system "$ENV{FIPS_SIG} $fips_target";
+       die "$ENV{FIPS_SIG} $fips_target failed" if $? != 0;
+       exit;
+}
 
 print "$fips_premain_dso $fips_target\n";
 system("$fips_premain_dso $fips_target >$fips_target.sha1");
@@ -74,6 +71,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) = @_;
index 2325607e8f700dedcc3ed84be2dc6c19fdb65c70..8934ababa13487ceb29631efc18f4ccca58d9826 100755 (executable)
@@ -864,13 +864,13 @@ if ($fips)
                }
        $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_standalone_sha1$obj",
                "fips${o}sha${o}fips_standalone_sha1.c",
-               "\$(SHLIB_CFLAGS)");
+               "\$(APP_CFLAGS)");
        $rules.=&cc_compile_target("\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj",
                "fips${o}fips_premain.c",
-               "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(SHLIB_CFLAGS)");
+               "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(APP_CFLAGS)");
        $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_algvs$obj",
                "test${o}fips_algvs.c",
-               "\$(SHLIB_CFLAGS)");
+               "\$(APP_CFLAGS)");
        }
 
 foreach (values %lib_nam)
index aef3de23ea1bcbd2ac03f051efceaabd1be8a225..85299cccbc9931facefe6530a2efef2df8a8d82f 100644 (file)
@@ -49,8 +49,7 @@ if ($FLAVOR =~ /WIN64/)
     # considered safe to ignore.
     # 
     $base_cflags= " $mf_cflag";
-    my $f = $shlib?' /MD':' /MT';
-    $lib_cflag='/Zl' if (!$shlib);     # remove /DEFAULTLIBs from static lib
+    my $f = ($shlib and !$fipscanisterbuild)?' /MD':' /MT';
     $opt_cflags=$f.' /Ox';
     $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG';
     $lflags="/nologo /subsystem:console /opt:ref";
@@ -127,19 +126,24 @@ elsif ($FLAVOR =~ /CE/)
     $base_cflags.=" $wcecdefs";
     $base_cflags.=' -I$(WCECOMPAT)/include'            if (defined($ENV{'WCECOMPAT'}));
     $base_cflags.=' -I$(PORTSDK_LIBPATH)/../../include'        if (defined($ENV{'PORTSDK_LIBPATH'}));
-    $opt_cflags=' /MC /O1i';   # optimize for space, but with intrinsics...
-    $dbg_clfags=' /MC /Od -DDEBUG -D_DEBUG';
+    if (`cl 2>&1` =~ /Version 1[4-9]\./) {
+       $base_cflags.=($shlib and !$fipscanisterbuild)?' /MD':' /MT';
+    } else {
+       $base_cflags.=' /MC';
+    }
+    $opt_cflags=' /O1i';       # optimize for space, but with intrinsics...
+    $dbg_clfags=' /Od -DDEBUG -D_DEBUG';
     $lflags="/nologo /opt:ref $wcelflag";
     }
 else   # Win32
     {
     $base_cflags= " $mf_cflag";
-    my $f = $shlib?' /MD':' /MT';
-    $lib_cflag='/Zl' if (!$shlib);     # remove /DEFAULTLIBs from static lib
+    my $f = ($shlib and !$fipscanisterbuild)?' /MD':' /MT';
     $opt_cflags=$f.' /Ox /O2 /Ob2';
     $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG';
     $lflags="/nologo /subsystem:console /opt:ref";
     }
+$lib_cflag='/Zl' if (!$shlib or $fipscanisterbuild);   # remove /DEFAULTLIBs
 $mlflags='';
 
 $out_def ="out32";     $out_def.="dll"                 if ($shlib);
@@ -284,7 +288,8 @@ elsif ($shlib && $FLAVOR =~ /CE/)
        {
        $mlflags.=" $lflags /dll";
        $lflags.=' /entry:mainCRTstartup' if(defined($ENV{'PORTSDK_LIBPATH'}));
-       $lib_cflag.=" -D_WINDLL -D_DLL";
+       $lib_cflag.=" -D_WINDLL";
+       $lib_cflag.=" -D_DLL" if (!$fipscanisterbuild);
        }
 
 sub do_lib_rule