Commit bc3cae7e authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Include error library value in C error source files instead of fixing up

at runtime.
parent 37942fab
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -778,7 +778,14 @@
     differing sizes.
     [Richard Levitte]

 Changes between 0.9.7f and 0.9.7g  [XX xxx xxxx]
 Changes between 0.9.7g and 0.9.7h  [XX xxx XXXX]

  *) Include the fixed error library code in the C error file definitions
     instead of fixing them up at runtime. This keeps the error code
     structures constant.
     [Steve Henson]

 Changes between 0.9.7f and 0.9.7g  [11 Apr 2005]

  *) Fixes for newer kerberos headers. NB: the casts are needed because
     the 'length' field is signed on one version and unsigned on another
+4 −2
Original line number Diff line number Diff line
@@ -631,6 +631,7 @@ static void err_load_strings(int lib, ERR_STRING_DATA *str)
	{
	while (str->error)
		{
		if (lib)
			str->error|=ERR_PACK(lib,0,0);
		ERRFN(err_set_item)(str);
		str++;
@@ -647,6 +648,7 @@ void ERR_unload_strings(int lib, ERR_STRING_DATA *str)
	{
	while (str->error)
		{
		if (lib)
			str->error|=ERR_PACK(lib,0,0);
		ERRFN(err_del_item)(str);
		str++;
+28 −5
Original line number Diff line number Diff line
@@ -9,6 +9,9 @@ my $reindex = 0;
my $dowrite = 0;
my $staticloader = "";

my $pack_errcode;
my $load_errcode;

while (@ARGV) {
	my $arg = $ARGV[0];
	if($arg eq "-conf") {
@@ -398,6 +401,20 @@ EOF
		$hincf = "\"$hfile\"";
	}

	# If static we know the error code at compile time so use it
	# in error definitions.

	if ($static)
		{
		$pack_errcode = "ERR_LIB_${lib}";
		$load_errcode = "0";
		}
	else
		{
		$pack_errcode = "0";
		$load_errcode = "ERR_LIB_${lib}";
		}


	open (OUT,">$cfile") || die "Can't open $cfile for writing";

@@ -468,6 +485,10 @@ EOF

/* BEGIN ERROR CODES */
#ifndef OPENSSL_NO_ERR

#define ERR_FUNC(func) ERR_PACK($pack_errcode,func,0)
#define ERR_REASON(reason) ERR_PACK($pack_errcode,0,reason)

static ERR_STRING_DATA ${lib}_str_functs[]=
	{
EOF
@@ -479,7 +500,8 @@ EOF
		if(exists $ftrans{$fn}) {
			$fn = $ftrans{$fn};
		}
		print OUT "{ERR_PACK(0,$i,0),\t\"$fn\"},\n";
#		print OUT "{ERR_PACK($pack_errcode,$i,0),\t\"$fn\"},\n";
		print OUT "{ERR_FUNC($i),\t\"$fn\"},\n";
	}
	print OUT <<"EOF";
{0,NULL}
@@ -491,6 +513,7 @@ EOF
	# Add each reason code.
	foreach $i (@reasons) {
		my $rn;
		my $rstr = "ERR_REASON($i)";
		my $nspc = 0;
		if (exists $err_reason_strings{$i}) {
			$rn = $err_reason_strings{$i};
@@ -499,9 +522,9 @@ EOF
			$rn = $1;
			$rn =~ tr/_[A-Z]/ [a-z]/;
		}
		$nspc = 40 - length($i) unless length($i) > 40;
		$nspc = 40 - length($rstr) unless length($rstr) > 40;
		$nspc = " " x $nspc;
		print OUT "{${i}${nspc},\"$rn\"},\n";
		print OUT "{${rstr}${nspc},\"$rn\"},\n";
	}
if($static) {
	print OUT <<"EOF";
@@ -518,8 +541,8 @@ ${staticloader}void ERR_load_${lib}_strings(void)
		{
		init=0;
#ifndef OPENSSL_NO_ERR
		ERR_load_strings(ERR_LIB_${lib},${lib}_str_functs);
		ERR_load_strings(ERR_LIB_${lib},${lib}_str_reasons);
		ERR_load_strings($load_errcode,${lib}_str_functs);
		ERR_load_strings($load_errcode,${lib}_str_reasons);
#endif

		}