diff options
author | Ralf S. Engelschall <rse@openssl.org> | 1998-12-21 10:56:39 +0000 |
---|---|---|
committer | Ralf S. Engelschall <rse@openssl.org> | 1998-12-21 10:56:39 +0000 |
commit | 58964a492275ca9a59a0cd9c8155cb2491b4b909 (patch) | |
tree | c7b16876a5789463bbbb468ef4829c8129b3d718 /crypto/err | |
parent | d02b48c63a58ea4367a0e905979f140b7d090f86 (diff) | |
download | openssl-58964a492275ca9a59a0cd9c8155cb2491b4b909.tar.gz |
Import of old SSLeay release: SSLeay 0.9.0b
Diffstat (limited to 'crypto/err')
-rw-r--r-- | crypto/err/Makefile.ssl | 2 | ||||
-rw-r--r-- | crypto/err/err.c | 238 | ||||
-rw-r--r-- | crypto/err/err.h | 72 | ||||
-rw-r--r-- | crypto/err/err_all.c | 3 | ||||
-rw-r--r-- | crypto/err/err_code.pl | 117 | ||||
-rw-r--r-- | crypto/err/err_genc.pl | 77 | ||||
-rw-r--r-- | crypto/err/err_prn.c | 27 | ||||
-rw-r--r-- | crypto/err/ssleay.ec | 57 |
8 files changed, 399 insertions, 194 deletions
diff --git a/crypto/err/Makefile.ssl b/crypto/err/Makefile.ssl index 9e1e451e59..57c87eb041 100644 --- a/crypto/err/Makefile.ssl +++ b/crypto/err/Makefile.ssl @@ -2,7 +2,7 @@ # SSLeay/crypto/err/Makefile # -DIR= error +DIR= err TOP= ../.. CC= cc INCLUDES= -I.. -I../../include diff --git a/crypto/err/err.c b/crypto/err/err.c index 6eec77a154..a65192493a 100644 --- a/crypto/err/err.c +++ b/crypto/err/err.c @@ -1,5 +1,5 @@ /* crypto/err/err.c */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written @@ -73,11 +73,16 @@ static unsigned long err_hash(ERR_STRING_DATA *a); static int err_cmp(ERR_STRING_DATA *a, ERR_STRING_DATA *b); static unsigned long pid_hash(ERR_STATE *pid); static int pid_cmp(ERR_STATE *a,ERR_STATE *pid); +static unsigned long get_error_values(int inc,char **file,int *line, + char **data,int *flags); +static void ERR_STATE_free(ERR_STATE *s); #else static unsigned long err_hash(); static int err_cmp(); static unsigned long pid_hash(); static int pid_cmp(); +static void ERR_STATE_free(); +ERR_STATE *s; #endif #ifndef NO_ERR @@ -147,6 +152,27 @@ static ERR_STRING_DATA ERR_str_reasons[]= }; #endif +#define err_clear_data(p,i) \ + if (((p)->err_data[i] != NULL) && \ + (p)->err_data_flags[i] & ERR_TXT_MALLOCED) \ + { \ + Free((p)->err_data[i]); \ + (p)->err_data[i]=NULL; \ + } \ + (p)->err_data_flags[i]=0; + +static void ERR_STATE_free(s) +ERR_STATE *s; + { + int i; + + for (i=0; i<ERR_NUM_ERRORS; i++) + { + err_clear_data(s,i); + } + Free(s); + } + void ERR_load_ERR_strings() { static int init=1; @@ -211,6 +237,8 @@ void ERR_free_strings() CRYPTO_w_unlock(CRYPTO_LOCK_ERR); } +/********************************************************/ + void ERR_put_error(lib,func,reason,file,line) int lib,func,reason; char *file; @@ -226,117 +254,109 @@ int line; es->err_buffer[es->top]=ERR_PACK(lib,func,reason); es->err_file[es->top]=file; es->err_line[es->top]=line; + err_clear_data(es,es->top); } void ERR_clear_error() { - int i; ERR_STATE *es; es=ERR_get_state(); +#if 0 + /* hmm... is this needed */ for (i=0; i<ERR_NUM_ERRORS; i++) { es->err_buffer[i]=0; es->err_file[i]=NULL; es->err_line[i]= -1; + err_clear_data(es,i); } +#endif es->top=es->bottom=0; } -unsigned long ERR_peek_error() - { - int i; - ERR_STATE *es; - - /* should be fine since only one thread should ever be playing - * with the value returned from this call */ - es=ERR_get_state(); - - if (es->bottom == es->top) return(0); - i=(es->bottom+1)%ERR_NUM_ERRORS; - - - return(es->err_buffer[i]); - } unsigned long ERR_get_error() - { - int i; - unsigned long ret; - ERR_STATE *es; + { return(get_error_values(1,NULL,NULL,NULL,NULL)); } - es=ERR_get_state(); - - if (es->bottom == es->top) return(0); - i=(es->bottom+1)%ERR_NUM_ERRORS; - es->bottom=i; - ret=es->err_buffer[i]; - es->err_buffer[i]=0; +unsigned long ERR_get_error_line(file,line) +char **file; +int *line; + { return(get_error_values(1,file,line,NULL,NULL)); } +unsigned long ERR_get_error_line_data(file,line,data,flags) +char **file; +int *line; +char **data; +int *flags; + { return(get_error_values(1,file,line,data,flags)); } - return(ret); - } +unsigned long ERR_peek_error() + { return(get_error_values(0,NULL,NULL,NULL,NULL)); } unsigned long ERR_peek_error_line(file,line) char **file; int *line; - { - int i=0; - ERR_STATE *es; - - es=ERR_get_state(); - - if (es->bottom == es->top) - { - return(0); - } - - i=(es->bottom+1)%ERR_NUM_ERRORS; - if (es->err_file[i] == NULL) - { - *file="NA"; - *line=0; - } - else - { - *file=es->err_file[i]; - *line=es->err_line[i]; - } + { return(get_error_values(0,file,line,NULL,NULL)); } - return(es->err_buffer[i]); - } +unsigned long ERR_peek_error_line_data(file,line,data,flags) +char **file; +int *line; +char **data; +int *flags; + { return(get_error_values(0,file,line,data,flags)); } -unsigned long ERR_get_error_line(file,line) +static unsigned long get_error_values(inc,file,line,data,flags) +int inc; char **file; int *line; - { - int i; - unsigned long ret; +char **data; +int *flags; + { + int i=0; ERR_STATE *es; + unsigned long ret; es=ERR_get_state(); - if (es->bottom == es->top) - return(0); - + if (es->bottom == es->top) return(0); i=(es->bottom+1)%ERR_NUM_ERRORS; - es->bottom=i; - ret= es->err_buffer[i]; - if (es->err_file[i] == NULL) + + ret=es->err_buffer[i]; + if (inc) { - *file="NA"; - *line=0; + es->bottom=i; + es->err_buffer[i]=0; } - else + + if ((file != NULL) && (line != NULL)) { - *file=es->err_file[i]; - *line=es->err_line[i]; + if (es->err_file[i] == NULL) + { + *file="NA"; + if (line != NULL) *line=0; + } + else + { + *file=es->err_file[i]; + if (line != NULL) *line=es->err_line[i]; + } } - es->err_buffer[i]=0; - es->err_file[i]=NULL; - es->err_line[i]= -1; + if (data != NULL) + { + if (es->err_data[i] == NULL) + { + *data=""; + if (flags != NULL) *flags=0; + } + else + { + *data=es->err_data[i]; + if (flags != NULL) *flags=es->err_data_flags[i]; + } + } return(ret); } @@ -498,14 +518,16 @@ unsigned long pid; tmp.pid=pid; CRYPTO_w_lock(CRYPTO_LOCK_ERR); p=(ERR_STATE *)lh_delete(thread_hash,(char *)&tmp); - if (p != NULL) Free(p); CRYPTO_w_unlock(CRYPTO_LOCK_ERR); + + if (p != NULL) ERR_STATE_free(p); } ERR_STATE *ERR_get_state() { static ERR_STATE fallback; ERR_STATE *ret=NULL,tmp,*tmpp; + int i; unsigned long pid; pid=(unsigned long)CRYPTO_thread_id(); @@ -539,12 +561,80 @@ ERR_STATE *ERR_get_state() ret->pid=pid; ret->top=0; ret->bottom=0; + for (i=0; i<ERR_NUM_ERRORS; i++) + { + ret->err_data[i]=NULL; + ret->err_data_flags[i]=0; + } CRYPTO_w_lock(CRYPTO_LOCK_ERR); tmpp=(ERR_STATE *)lh_insert(thread_hash,(char *)ret); CRYPTO_w_unlock(CRYPTO_LOCK_ERR); if (tmpp != NULL) /* old entry - should not happen */ - Free(tmpp); + { + ERR_STATE_free(tmpp); + } } return(ret); } +int ERR_get_next_error_library() + { + static int value=ERR_LIB_USER; + + return(value++); + } + +void ERR_set_error_data(data,flags) +char *data; +int flags; + { + ERR_STATE *es; + int i; + + es=ERR_get_state(); + + i=es->top; + if (i == 0) + i=ERR_NUM_ERRORS-1; + + es->err_data[i]=data; + es->err_data_flags[es->top]=flags; + } + +void ERR_add_error_data( VAR_PLIST(int , num)) +VAR_ALIST + { + VAR_BDEFN(args, int, num); + int i,n,s; + char *str,*p,*a; + + s=64; + str=Malloc(s+1); + if (str == NULL) return; + str[0]='\0'; + + VAR_INIT(args,int,num); + n=0; + for (i=0; i<num; i++) + { + VAR_ARG(args,char *,a); + n+=strlen(a); + if (n > s) + { + s=n+20; + p=Realloc(str,s+1); + if (p == NULL) + { + Free(str); + return; + } + else + str=p; + } + strcat(str,a); + } + ERR_set_error_data(str,ERR_TXT_MALLOCED|ERR_TXT_STRING); + + VAR_END( args ); + } + diff --git a/crypto/err/err.h b/crypto/err/err.h index aa3354e2dd..75f931be11 100644 --- a/crypto/err/err.h +++ b/crypto/err/err.h @@ -1,5 +1,5 @@ /* crypto/err/err.h */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written @@ -77,11 +77,16 @@ extern "C" { #include <errno.h> -#define ERR_NUM_ERRORS 10 +#define ERR_TXT_MALLOCED 0x01 +#define ERR_TXT_STRING 0x02 + +#define ERR_NUM_ERRORS 16 typedef struct err_state_st { unsigned long pid; unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; char *err_file[ERR_NUM_ERRORS]; int err_line[ERR_NUM_ERRORS]; int top,bottom; @@ -102,6 +107,7 @@ typedef struct err_state_st #define ERR_LIB_METH 12 #define ERR_LIB_ASN1 13 #define ERR_LIB_CONF 14 +#define ERR_LIB_CRYPTO 15 #define ERR_LIB_SSL 20 #define ERR_LIB_SSL23 21 #define ERR_LIB_SSL2 22 @@ -113,27 +119,28 @@ typedef struct err_state_st #define ERR_LIB_USER 128 -#define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),ERR_file_name,__LINE__) -#define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),ERR_file_name,__LINE__) -#define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),ERR_file_name,__LINE__) -#define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),ERR_file_name,__LINE__) -#define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),ERR_file_name,__LINE__) -#define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),ERR_file_name,__LINE__) -#define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),ERR_file_name,__LINE__) -#define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),ERR_file_name,__LINE__) -#define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),ERR_file_name,__LINE__) -#define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),ERR_file_name,__LINE__) -#define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),ERR_file_name,__LINE__) -#define METHerr(f,r) ERR_PUT_error(ERR_LIB_METH,(f),(r),ERR_file_name,__LINE__) -#define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),ERR_file_name,__LINE__) -#define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),ERR_file_name,__LINE__) -#define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),ERR_file_name,__LINE__) -#define SSL23err(f,r) ERR_PUT_error(ERR_LIB_SSL23,(f),(r),ERR_file_name,__LINE__) -#define SSL2err(f,r) ERR_PUT_error(ERR_LIB_SSL2,(f),(r),ERR_file_name,__LINE__) -#define SSL3err(f,r) ERR_PUT_error(ERR_LIB_SSL3,(f),(r),ERR_file_name,__LINE__) -#define RSAREFerr(f,r) ERR_PUT_error(ERR_LIB_RSAREF,(f),(r),ERR_file_name,__LINE__) -#define PROXYerr(f,r) ERR_PUT_error(ERR_LIB_PROXY,(f),(r),ERR_file_name,__LINE__) -#define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),ERR_file_name,__LINE__) +#define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),ERR_file_name,__LINE__) +#define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),ERR_file_name,__LINE__) +#define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),ERR_file_name,__LINE__) +#define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),ERR_file_name,__LINE__) +#define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),ERR_file_name,__LINE__) +#define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),ERR_file_name,__LINE__) +#define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),ERR_file_name,__LINE__) +#define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),ERR_file_name,__LINE__) +#define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),ERR_file_name,__LINE__) +#define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),ERR_file_name,__LINE__) +#define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),ERR_file_name,__LINE__) +#define METHerr(f,r) ERR_PUT_error(ERR_LIB_METH,(f),(r),ERR_file_name,__LINE__) +#define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),ERR_file_name,__LINE__) +#define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),ERR_file_name,__LINE__) +#define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),ERR_file_name,__LINE__) +#define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),ERR_file_name,__LINE__) +#define SSL23err(f,r) ERR_PUT_error(ERR_LIB_SSL23,(f),(r),ERR_file_name,__LINE__) +#define SSL2err(f,r) ERR_PUT_error(ERR_LIB_SSL2,(f),(r),ERR_file_name,__LINE__) +#define SSL3err(f,r) ERR_PUT_error(ERR_LIB_SSL3,(f),(r),ERR_file_name,__LINE__) +#define RSAREFerr(f,r) ERR_PUT_error(ERR_LIB_RSAREF,(f),(r),ERR_file_name,__LINE__) +#define PROXYerr(f,r) ERR_PUT_error(ERR_LIB_PROXY,(f),(r),ERR_file_name,__LINE__) +#define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),ERR_file_name,__LINE__) /* Borland C seems too stupid to be able to shift and do longs in * the pre-processor :-( */ @@ -172,6 +179,7 @@ typedef struct err_state_st #define ERR_R_METH_LIB ERR_LIB_METH #define ERR_R_ASN1_LIB ERR_LIB_ASN1 #define ERR_R_CONF_LIB ERR_LIB_CONF +#define ERR_R_CRYPTO_LIB ERR_LIB_CRYPTO #define ERR_R_SSL_LIB ERR_LIB_SSL #define ERR_R_SSL23_LIB ERR_LIB_SSL23 #define ERR_R_SSL2_LIB ERR_LIB_SSL2 @@ -193,20 +201,27 @@ typedef struct ERR_string_data_st #ifndef NOPROTO void ERR_put_error(int lib, int func,int reason,char *file,int line); +void ERR_set_error_data(char *data,int flags); + unsigned long ERR_get_error(void ); unsigned long ERR_get_error_line(char **file,int *line); +unsigned long ERR_get_error_line_data(char **file,int *line, + char **data, int *flags); unsigned long ERR_peek_error(void ); unsigned long ERR_peek_error_line(char **file,int *line); +unsigned long ERR_peek_error_line_data(char **file,int *line, + char **data,int *flags); void ERR_clear_error(void ); char *ERR_error_string(unsigned long e,char *buf); char *ERR_lib_error_string(unsigned long e); char *ERR_func_error_string(unsigned long e); char *ERR_reason_error_string(unsigned long e); -#ifndef WIN16 +#ifndef NO_FP_API void ERR_print_errors_fp(FILE *fp); #endif #ifdef HEADER_BIO_H void ERR_print_errors(BIO *bp); +void ERR_add_error_data( VAR_PLIST( int, num ) ); #endif void ERR_load_strings(int lib,ERR_STRING_DATA str[]); void ERR_load_ERR_strings(void ); @@ -224,9 +239,13 @@ char *ERR_get_string_table(void ); char *ERR_get_err_state_table(void ); #endif +int ERR_get_next_error_library(void ); + #else void ERR_put_error(); +void ERR_set_error_data(); + unsigned long ERR_get_error(); unsigned long ERR_get_error_line(); unsigned long ERR_peek_error(); @@ -236,10 +255,11 @@ char *ERR_error_string(); char *ERR_lib_error_string(); char *ERR_func_error_string(); char *ERR_reason_error_string(); -#ifndef WIN16 +#ifndef NO_FP_API void ERR_print_errors_fp(); #endif void ERR_print_errors(); +void ERR_add_error_data(); void ERR_load_strings(); void ERR_load_ERR_strings(); void ERR_load_crypto_strings(); @@ -256,6 +276,8 @@ char *ERR_get_string_table(); char *ERR_get_err_state_table(); #endif +int ERR_get_next_error_library(); + #endif #ifdef __cplusplus diff --git a/crypto/err/err_all.c b/crypto/err/err_all.c index d6d8109ea0..f874268e1a 100644 --- a/crypto/err/err_all.c +++ b/crypto/err/err_all.c @@ -1,5 +1,5 @@ /* crypto/err/err_all.c */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written @@ -110,6 +110,7 @@ void ERR_load_crypto_strings() ERR_load_OBJ_strings(); ERR_load_PEM_strings(); ERR_load_X509_strings(); + ERR_load_CRYPTO_strings(); ERR_load_PKCS7_strings(); #endif } diff --git a/crypto/err/err_code.pl b/crypto/err/err_code.pl index 5b893001c6..7f4cd7c216 100644 --- a/crypto/err/err_code.pl +++ b/crypto/err/err_code.pl @@ -1,79 +1,48 @@ #!/usr/local/bin/perl -%errfile=( - "ERR", "NONE", - "BN", "bn/bn.err", - "RSA", "rsa/rsa.err", - "DSA", "dsa/dsa.err", - "DH", "dh/dh.err", - "EVP", "evp/evp.err", - "BUF", "buffer/buffer.err", - "BIO", "bio/bio.err", - "OBJ", "objects/objects.err", - "PEM", "pem/pem.err", - "X509", "x509/x509.err", - "METH", "meth/meth.err", - "ASN1", "asn1/asn1.err", - "CONF", "conf/conf.err", - "PROXY","proxy/proxy.err", - "PKCS7","pkcs7/pkcs7.err", - "RSAREF","../rsaref/rsaref.err", - "SSL", "../ssl/ssl.err", - "SSL2", "../ssl/ssl2.err", - "SSL3", "../ssl/ssl3.err", - "SSL23","../ssl/ssl23.err", - ); - -$function{'RSAREF_F_RSA_BN2BIN'}=1; -$function{'RSAREF_F_RSA_PRIVATE_DECRYPT'}=1; -$function{'RSAREF_F_RSA_PRIVATE_ENCRYPT'}=1; -$function{'RSAREF_F_RSA_PUBLIC_DECRYPT'}=1; -$function{'RSAREF_F_RSA_PUBLIC_ENCRYPT'}=1; -$function{'SSL_F_CLIENT_CERTIFICATE'}=1; - -$r_value{'SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE'}= 1010; -$r_value{'SSL_R_SSLV3_ALERT_BAD_RECORD_MAC'}= 1020; -$r_value{'SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE'}=1030; -$r_value{'SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE'}= 1040; -$r_value{'SSL_R_SSLV3_ALERT_NO_CERTIFICATE'}= 1041; -$r_value{'SSL_R_SSLV3_ALERT_BAD_CERTIFICATE'}= 1042; -$r_value{'SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE'}=1043; -$r_value{'SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED'}= 1044; -$r_value{'SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED'}= 1045; -$r_value{'SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN'}= 1046; -$r_value{'SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER'}= 1047; - -$r_value{'RSAREF_R_CONTENT_ENCODING'}= 0x0400; -$r_value{'RSAREF_R_DATA'}= 0x0401; -$r_value{'RSAREF_R_DIGEST_ALGORITHM'}= 0x0402; -$r_value{'RSAREF_R_ENCODING'}= 0x0403; -$r_value{'RSAREF_R_KEY'}= 0x0404; -$r_value{'RSAREF_R_KEY_ENCODING'}= 0x0405; -$r_value{'RSAREF_R_LEN'}= 0x0406; -$r_value{'RSAREF_R_MODULUS_LEN'}= 0x0407; -$r_value{'RSAREF_R_NEED_RANDOM'}= 0x0408; -$r_value{'RSAREF_R_PRIVATE_KEY'}= 0x0409; -$r_value{'RSAREF_R_PUBLIC_KEY'}= 0x040a; -$r_value{'RSAREF_R_SIGNATURE'}= 0x040b; -$r_value{'RSAREF_R_SIGNATURE_ENCODING'}=0x040c; -$r_value{'RSAREF_R_ENCRYPTION_ALGORITHM'}=0x040d; - -$last=""; -while (<>) +while (@ARGV) { - if (/err\(([A-Z0-9]+_F_[0-9A-Z_]+)\s*,\s*([0-9A-Z]+_R_[0-9A-Z_]+)\s*\)/) + $in=shift(@ARGV); + if ($in =~ /^-conf$/) { - if ($1 != $last) + $in=shift(@ARGV); + open(IN,"<$in") || die "unable to open '$in'\n"; + while (<IN>) { - if ($function{$1} == 0) + s/#.*$//; + s/\s+$//; + next if (/^$/); + if (/^L\s+(\S+)\s+(\S+)$/) + { $errfile{$1}=$2; } + elsif (/^F\s+(\S+)$/) + { $function{$1}=1; } + elsif (/^R\s+(\S+)\s+(\S+)$/) + { $r_value{$1}=$2; } + else { die "bad input line: $in:$.\n"; } + } + close(IN); + next; + } + + open(IN,"<$in") || die "unable to open '$in'\n"; + $last=""; + while (<IN>) + { + if (/err\(([A-Z0-9]+_F_[0-9A-Z_]+)\s*,\s*([0-9A-Z]+_R_[0-9A-Z_]+)\s*\)/) + { + if ($1 != $last) { - printf STDERR "$. $1 is bad\n"; + if ($function{$1} == 0) + { + printf STDERR "$. $1 is bad\n"; + } } + $function{$1}++; + $last=$1; + $reason{$2}++; } - $function{$1}++; - $last=$1; - $reason{$2}++; } + close(IN); } foreach (keys %function,keys %reason) @@ -88,7 +57,17 @@ foreach $j (sort keys %prefix) { next if $errfile{$j} eq "NONE"; printf STDERR "doing %-6s - ",$j; - open(OUT,">$errfile{$j}") || die "unable to open '$errfile{$j}':$!\n"; + if (defined($errfile{$j})) + { + open(OUT,">$errfile{$j}") || + die "unable to open '$errfile{$j}':$!\n"; + $close_file=1; + } + else + { + *OUT=*STDOUT; + $close=0; + } @f=grep(/^${j}_/,@F); @r=grep(/^${j}_/,@R); $num=100; @@ -119,7 +98,7 @@ foreach $j (sort keys %prefix) } $r_count++; } - close(OUT); + close(OUT) if $close_file; printf STDERR "%3d functions, %3d reasons\n",$f_count,$r_count; } diff --git a/crypto/err/err_genc.pl b/crypto/err/err_genc.pl index 6733cfe574..d3251da842 100644 --- a/crypto/err/err_genc.pl +++ b/crypto/err/err_genc.pl @@ -1,6 +1,8 @@ #!/usr/local/bin/perl -($#ARGV == 1) || die "usage: $0 <header file> <output C file>\n"; +if ($ARGV[0] eq "-s") { $static=1; shift @ARGV; } + +($#ARGV == 1) || die "usage: $0 [-s] <header file> <output C file>\n"; open(IN,"<$ARGV[0]") || die "unable to open $ARGV[0]:$!\n"; open(STDOUT,">$ARGV[1]") || die "unable to open $ARGV[1]:$!\n"; @@ -58,19 +60,67 @@ foreach (sort keys %out) print "{0,NULL},\n"; print "\t};\n\n"; } +print "#endif\n"; + +if ($static) + { $lib="ERR_LIB_$type"; } +else + { $lib="${type}_lib_error_code"; } + +$str=""; +$str.="#ifndef NO_ERR\n"; +$str.="\t\tERR_load_strings($lib,${type}_str_functs);\n" if $Func; +$str.="\t\tERR_load_strings($lib,${type}_str_reasons);\n" if $Reas; +$str.="#endif\n"; + +if (!$static) + { +print <<"EOF"; + +static int ${type}_lib_error_code=0; + +void ERR_load_${type}_strings() + { + static int init=1; + + if (${type}_lib_error_code == 0) + ${type}_lib_error_code=ERR_get_next_error_library(); + + if (init); + {; + init=0; +$str + } + } -print "void ERR_load_${type}_strings()\n"; -print "\t{\n"; -print "\tstatic int init=1;\n\n"; -print "\tif (init)\n"; -print "\t\t{\n"; -print "\t\tinit=0;\n"; -print "\t\tERR_load_strings(ERR_LIB_$type,${type}_str_functs);\n" - if $Func; -print "\t\tERR_load_strings(ERR_LIB_$type,${type}_str_reasons);\n" - if $Reas; -print "\t\t}\n"; -print "\t}\n"; +void ERR_${type}_error(function,reason,file,line) +int function; +int reason; +char *file; +int line; + { + if (${type}_lib_error_code == 0) + ${type}_lib_error_code=ERR_get_next_error_library(); + ERR_PUT_error(${type}_lib_error_code,function,reason,file,line); + } +EOF + } +else # $static + { + print <<"EOF"; + +void ERR_load_${type}_strings() + { + static int init=1; + + if (init); + {; + init=0; +$str + } + } +EOF + } sub header { @@ -143,5 +193,6 @@ EOF print "#include \"err.h\"\n"; print "#include \"$header\"\n"; print "\n/* BEGIN ERROR CODES */\n"; + print "#ifndef NO_ERR\n"; } diff --git a/crypto/err/err_prn.c b/crypto/err/err_prn.c index 16e313879d..ecd0e7c4fa 100644 --- a/crypto/err/err_prn.c +++ b/crypto/err/err_prn.c @@ -1,5 +1,5 @@ /* crypto/err/err_prn.c */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written @@ -64,20 +64,22 @@ #include "err.h" #include "crypto.h" -#ifndef WIN16 +#ifndef NO_FP_API void ERR_print_errors_fp(fp) FILE *fp; { unsigned long l; char buf[200]; - char *file; - int line; + char *file,*data; + int line,flags; unsigned long es; es=CRYPTO_thread_id(); - while ((l=ERR_get_error_line(&file,&line)) != 0) - fprintf(fp,"%lu:%s:%s:%d\n",es,ERR_error_string(l,buf), - file,line); + while ((l=ERR_get_error_line_data(&file,&line,&data,&flags)) != 0) + { + fprintf(fp,"%lu:%s:%s:%d:%s\n",es,ERR_error_string(l,buf), + file,line,(flags&ERR_TXT_STRING)?data:""); + } } #endif @@ -87,16 +89,19 @@ BIO *bp; unsigned long l; char buf[256]; char buf2[256]; - char *file; - int line; + char *file,*data; + int line,flags; unsigned long es; es=CRYPTO_thread_id(); - while ((l=ERR_get_error_line(&file,&line)) != 0) + while ((l=ERR_get_error_line_data(&file,&line,&data,&flags)) != 0) { - sprintf(buf2,"%lu:%s:%s:%d\n",es,ERR_error_string(l,buf), + sprintf(buf2,"%lu:%s:%s:%d:",es,ERR_error_string(l,buf), file,line); BIO_write(bp,buf2,strlen(buf2)); + if (flags & ERR_TXT_STRING) + BIO_write(bp,data,strlen(data)); + BIO_write(bp,"\n",1); } } diff --git a/crypto/err/ssleay.ec b/crypto/err/ssleay.ec new file mode 100644 index 0000000000..10b5dbb59d --- /dev/null +++ b/crypto/err/ssleay.ec @@ -0,0 +1,57 @@ +L ERR NONE +L CRYPTO crypto.err +L BN bn/bn.err +L RSA rsa/rsa.err +L DSA dsa/dsa.err +L DH dh/dh.err +L EVP evp/evp.err +L BUF buffer/buffer.err +L BIO bio/bio.err +L OBJ objects/objects.err +L PEM pem/pem.err +L X509 x509/x509.err +L METH meth/meth.err +L ASN1 asn1/asn1.err +L CONF conf/conf.err +L PROXY proxy/proxy.err +L PKCS7 pkcs7/pkcs7.err +L RSAREF ../rsaref/rsaref.err +L SSL ../ssl/ssl.err +L SSL2 ../ssl/ssl2.err +L SSL3 ../ssl/ssl3.err +L SSL23 ../ssl/ssl23.err + +F RSAREF_F_RSA_BN2BIN +F RSAREF_F_RSA_PRIVATE_DECRYPT +F RSAREF_F_RSA_PRIVATE_ENCRYPT +F RSAREF_F_RSA_PUBLIC_DECRYPT +F RSAREF_F_RSA_PUBLIC_ENCRYPT +#F SSL_F_CLIENT_CERTIFICATE + +R SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +R SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +R SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +R SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +R SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +R SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +R SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +R SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +R SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +R SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +R SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 + +R RSAREF_R_CONTENT_ENCODING 0x0400 +R RSAREF_R_DATA 0x0401 +R RSAREF_R_DIGEST_ALGORITHM 0x0402 +R RSAREF_R_ENCODING 0x0403 +R RSAREF_R_KEY 0x0404 +R RSAREF_R_KEY_ENCODING 0x0405 +R RSAREF_R_LEN 0x0406 +R RSAREF_R_MODULUS_LEN 0x0407 +R RSAREF_R_NEED_RANDOM 0x0408 +R RSAREF_R_PRIVATE_KEY 0x0409 +R RSAREF_R_PUBLIC_KEY 0x040a +R RSAREF_R_SIGNATURE 0x040b +R RSAREF_R_SIGNATURE_ENCODING 0x040c +R RSAREF_R_ENCRYPTION_ALGORITHM 0x040d + |