Skip to content

Commit

Permalink
util/ck_errf.pl: add detection of unknown libcrypto and libssl libs
Browse files Browse the repository at this point in the history
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 #6455)
  • Loading branch information
levitte committed Jun 11, 2018
1 parent fa92c69 commit a21180b
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions util/ck_errf.pl
Expand Up @@ -19,6 +19,20 @@
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;
Expand All @@ -33,17 +47,22 @@
$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;
}
Expand Down

0 comments on commit a21180b

Please sign in to comment.