diff --git a/CHANGES b/CHANGES index be6cfb184aeabe9b68a44e22752dc18b28cc90a2..349ede197e9c7b2481a0d2f70f0bd91cd031e96e 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,11 @@ *) applies to 0.9.6a/0.9.6b/0.9.6c and 0.9.7 +) applies to 0.9.7 only + +) Change mkdef.pl to sort symbols that get the same entry number, + and make sure the automatically generated functions ERR_load_* + become part of libeay.num as well. + [Richard Levitte] + *) Avoid infinite loop in ssl3_get_message (ssl/s3_both.c) if a client receives HelloRequest while in a handshake. [Bodo Moeller; bug noticed by Andy Schneider ] diff --git a/util/mkdef.pl b/util/mkdef.pl index 32e0ee0bf9eb77b88a4edadd6b8a76bb82b1e3d6..b66d05c06e93d217bdaa5bf23c685463fc6c0d5e 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -332,6 +332,7 @@ sub do_defs foreach $file (split(/\s+/,$symhacksfile." ".$files)) { + print STDERR "DEBUG: starting on $file:\n" if $debug; open(IN,"<$file") || die "unable to open $file:$!\n"; my $line = "", my $def= ""; my %tag = ( @@ -400,7 +401,7 @@ sub do_defs print STDERR "DEBUG: parsing ----------\n" if $debug; while() { - last if (/BEGIN ERROR CODES/); + last if (/\/\* Error codes for the \w+ functions\. \*\//); if ($line ne '') { $_ = $line . $_; $line = ''; @@ -785,14 +786,18 @@ sub do_defs if (/^\#INFO:([^:]*):(.*)$/) { $plats = $1; $algs = $2; + print STDERR "DEBUG: found info on platforms ($plats) and algorithms ($algs)\n" if $debug; next; } elsif (/^\s*OPENSSL_EXTERN\s.*?(\w+(\{[0-9]+\})?)(\[[0-9]*\])*\s*$/) { $s = $1; $k = "VARIABLE"; + print STDERR "DEBUG: found external variable $s\n" if $debug; } elsif (/\(\*(\w*(\{[0-9]+\})?)\([^\)]+/) { $s = $1; + print STDERR "DEBUG: found ANSI C function $s\n" if $debug; } elsif (/\w+\W+(\w+)\W*\(\s*\)$/s) { # K&R C + print STDERR "DEBUG: found K&R C function $s\n" if $debug; next; } elsif (/\w+\W+\w+(\{[0-9]+\})?\W*\(.*\)$/s) { while (not /\(\)$/s) { @@ -802,6 +807,7 @@ sub do_defs s/\(void\)//; /(\w+(\{[0-9]+\})?)\W*\(\)/s; $s = $1; + print STDERR "DEBUG: found function $s\n" if $debug; } elsif (/\(/ and not (/=/)) { print STDERR "File $file: cannot parse: $_;\n"; next; @@ -1244,7 +1250,10 @@ sub rewrite_numbers $syms{$n} = 1; } - my @s=sort { &parse_number($nums{$a},"n") <=> &parse_number($nums{$b},"n") } keys %nums; + my @s=sort { + &parse_number($nums{$a},"n") <=> &parse_number($nums{$b},"n") + || $a cmp $b + } keys %nums; foreach $sym (@s) { (my $n, my $i) = split /\\/, $nums{$sym}; next if defined($i) && $i =~ /^.*?:.*?:\w+\(\w+\)/;