util/ck_errf.pl: add detection of unknown libcrypto and libssl libs

The list of known libs are readily available in crypto/err/openssl.ec,
so lets use it to figure out if all error function codes belong to
known libs.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6455)
This commit is contained in:
Richard Levitte 2018-06-11 16:26:19 +02:00
parent fa92c69aaf
commit a21180b70f

View file

@ -19,6 +19,20 @@ use warnings;
my $err_strict = 0;
my $bad = 0;
# To detect if there is any error generation for a libcrypto/libssl libs
# we don't know, we need to find out what libs we do know. That list is
# readily available in crypto/err/openssl.ec, in form of lines starting
# with "L ".
my $config = "crypto/err/openssl.ec";
my %libs = ( "SYS" => 1 );
open my $cfh, $config or die "Trying to read $config: $!\n";
while (<$cfh>) {
s|\R$||; # Better chomp
next unless m|^L ([0-9A-Z_]+)\s|;
next if $1 eq "NONE";
$libs{$1} = 1;
}
foreach my $file (@ARGV) {
if ( $file eq "-strict" ) {
$err_strict = 1;
@ -33,17 +47,22 @@ foreach my $file (@ARGV) {
$func = $1;
$func =~ tr/A-Z/a-z/;
}
if ( /([A-Z0-9]+)err\(([^,]+)/ && !/ckerr_ignore/ ) {
if ( /([A-Z0-9_]+[A-Z0-9])err\(([^,]+)/ && !/ckerr_ignore/ ) {
my $errlib = $1;
my $n = $2;
unless ( $libs{$errlib} ) {
print "$file:$.:$errlib unknown\n";
$bad = 1;
}
if ( $func eq "" ) {
print "$file:$.:???:$n\n";
$bad = 1;
next;
}
if ( $n !~ /([^_]+)_F_(.+)$/ ) {
if ( $n !~ /^(.+)_F_(.+)$/ ) {
#print "check -$file:$.:$func:$n\n";
next;
}