From aa4d426b4d3527d7e166df1a05058c9a4a0f6683 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Fri, 30 Apr 2021 00:33:56 +0200 Subject: initial/final commit --- openssl-1.1.0h/util/selftest.pl | 207 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 openssl-1.1.0h/util/selftest.pl (limited to 'openssl-1.1.0h/util/selftest.pl') diff --git a/openssl-1.1.0h/util/selftest.pl b/openssl-1.1.0h/util/selftest.pl new file mode 100644 index 0000000..d1d1159 --- /dev/null +++ b/openssl-1.1.0h/util/selftest.pl @@ -0,0 +1,207 @@ +#! /usr/bin/env perl +# Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +# Run the test suite and generate a report + +if (! -f "Configure") { + print "Please run perl util/selftest.pl in the OpenSSL directory.\n"; + exit 1; +} + +my $report="testlog"; +my $os="??"; +my $version="??"; +my $platform0="??"; +my $platform="??"; +my $options="??"; +my $last="??"; +my $ok=0; +my $cc="cc"; +my $cversion="??"; +my $sep="-----------------------------------------------------------------------------\n"; +my $not_our_fault="\nPlease ask your system administrator/vendor for more information.\n[Problems with your operating system setup should not be reported\nto the OpenSSL project.]\n"; + +open(OUT,">$report") or die; + +print OUT "OpenSSL self-test report:\n\n"; + +$uname=`uname -a`; +$uname="??\n" if $uname eq ""; + +$c=`sh config -t`; +foreach $_ (split("\n",$c)) { + $os=$1 if (/Operating system: (.*)$/); + $platform0=$1 if (/Configuring for (.*)$/); +} + +system "sh config" if (! -f "Makefile"); + +if (open(IN,") { + $version=$1 if (/^VERSION=(.*)$/); + $platform=$1 if (/^PLATFORM=(.*)$/); + $options=$1 if (/^OPTIONS=(.*)$/); + $cc=$1 if (/^CC= *(.*)$/); + } + close(IN); +} else { + print OUT "Error running config!\n"; +} + +$cversion=`$cc -v 2>&1`; +$cversion=`$cc -V 2>&1` if $cversion =~ "[Uu]sage"; +$cversion=`$cc -V |head -1` if $cversion =~ "Error"; +$cversion=`$cc --version` if $cversion eq ""; +$cversion =~ s/Reading specs.*\n//; +$cversion =~ s/usage.*\n//; +$cversion =~ s|\R$||; + +if (open(IN,") { + if (/\*\) (.{0,55})/ && !/applies to/) { + $last=$1; + last; + } + } + close(IN); +} + +print OUT "OpenSSL version: $version\n"; +print OUT "Last change: $last...\n"; +print OUT "Options: $options\n" if $options ne ""; +print OUT "OS (uname): $uname"; +print OUT "OS (config): $os\n"; +print OUT "Target (default): $platform0\n"; +print OUT "Target: $platform\n"; +print OUT "Compiler: $cversion\n"; +print OUT "\n"; + +print "Checking compiler...\n"; +if (open(TEST,">cctest.c")) { + print TEST "#include \n#include \n#include \nmain(){printf(\"Hello world\\n\");}\n"; + close(TEST); + system("$cc -o cctest cctest.c"); + if (`./cctest` !~ /Hello world/) { + print OUT "Compiler doesn't work.\n"; + print OUT $not_our_fault; + goto err; + } + system("ar r cctest.a /dev/null"); + if (not -f "cctest.a") { + print OUT "Check your archive tool (ar).\n"; + print OUT $not_our_fault; + goto err; + } +} else { + print OUT "Can't create cctest.c\n"; +} +if (open(TEST,">cctest.c")) { + print TEST "#include \n#include \n#include \nmain(){printf(OPENSSL_VERSION_TEXT);}\n"; + close(TEST); + system("$cc -o cctest -Iinclude cctest.c"); + $cctest = `./cctest`; + if ($cctest !~ /OpenSSL $version/) { + if ($cctest =~ /OpenSSL/) { + print OUT "#include uses headers from different OpenSSL version!\n"; + } else { + print OUT "Can't compile test program!\n"; + } + print OUT $not_our_fault; + goto err; + } +} else { + print OUT "Can't create cctest.c\n"; +} + +print "Running make...\n"; +if (system("make 2>&1 | tee make.log") > 255) { + + print OUT "make failed!\n"; + if (open(IN,") { + print OUT; + } + close(IN); + print OUT $sep; + } else { + print OUT "make.log not found!\n"; + } + goto err; +} + +# Not sure why this is here. The tests themselves can detect if their +# particular feature isn't included, and should therefore skip themselves. +# To skip *all* tests just because one algorithm isn't included is like +# shooting mosquito with an elephant gun... +# -- Richard Levitte, inspired by problem report 1089 +# +#$_=$options; +#s/no-asm//; +#s/no-shared//; +#s/no-krb5//; +#if (/no-/) +#{ +# print OUT "Test skipped.\n"; +# goto err; +#} + +print "Running make test...\n"; +if (system("make test 2>&1 | tee maketest.log") > 255) + { + print OUT "make test failed!\n"; +} else { + $ok=1; +} + +if ($ok and open(IN,") { + $ok=2 if /^platform: $platform/; + } + close(IN); +} + +if ($ok != 2) { + print OUT "Failure!\n"; + if (open(IN,") { + print OUT; + } + close(IN); + print OUT $sep; + } else { + print OUT "make.log not found!\n"; + } + if (open(IN,") { + print OUT; + } + close(IN); + print OUT $sep; + } else { + print OUT "maketest.log not found!\n"; + } +} else { + print OUT "Test passed.\n"; +} +err: +close(OUT); + +print "\n"; +open(IN,"<$report") or die; +while () { + if (/$sep/) { + print "[...]\n"; + last; + } + print; +} +print "\nTest report in file $report\n"; + +die if $ok != 2; -- cgit v1.2.3