X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=ssl%2Fssl_lib.c;h=3c71d5b367967c18e332a72bdac1a8a894c6d071;hp=02f8d112562bbcd17def13cf1ffdb7dbcaa78816;hb=45206340d3918de146864e43de83484cfb20691e;hpb=ca03109c3aa2a907885f299d7af749754c4d172d diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 02f8d11256..3c71d5b367 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -64,15 +64,15 @@ #include #include "ssl_locl.h" -char *SSL_version_str=OPENSSL_VERSION_TEXT; +const char *SSL_version_str=OPENSSL_VERSION_TEXT; -static STACK *ssl_meth=NULL; -static STACK *ssl_ctx_meth=NULL; +static STACK_OF(CRYPTO_EX_DATA_FUNCS) *ssl_meth=NULL; +static STACK_OF(CRYPTO_EX_DATA_FUNCS) *ssl_ctx_meth=NULL; static int ssl_meth_num=0; static int ssl_ctx_meth_num=0; OPENSSL_GLOBAL SSL3_ENC_METHOD ssl3_undef_enc_method={ - /* evil casts, but these functions are only called if there's a libraryr bug */ + /* evil casts, but these functions are only called if there's a library bug */ (int (*)(SSL *,int))ssl_undefined_function, (int (*)(SSL *, unsigned char *, int))ssl_undefined_function, ssl_undefined_function, @@ -81,6 +81,18 @@ OPENSSL_GLOBAL SSL3_ENC_METHOD ssl3_undef_enc_method={ (int (*)(SSL *, EVP_MD_CTX *, EVP_MD_CTX *, const char*, int, unsigned char *))ssl_undefined_function }; +union rsa_fn_to_char_u + { + char *char_p; + RSA *(*fn_p)(SSL *, int, int); + }; + +union dh_fn_to_char_u + { + char *char_p; + DH *(*fn_p)(SSL *, int, int); + }; + int SSL_clear(SSL *s) { int state; @@ -222,7 +234,7 @@ SSL *SSL_new(SSL_CTX *ctx) s->mode=ctx->mode; SSL_clear(s); - CRYPTO_new_ex_data(ssl_meth,(char *)s,&s->ex_data); + CRYPTO_new_ex_data(ssl_meth,s,&s->ex_data); return(s); err: @@ -368,7 +380,7 @@ void SSL_free(SSL *s) if (s->method != NULL) s->method->ssl_free(s); - Free((char *)s); + Free(s); } void SSL_set_bio(SSL *s,BIO *rbio,BIO *wbio) @@ -910,8 +922,8 @@ const char *SSL_get_cipher_list(SSL *s,int n) return(c->name); } -/** specify the ciphers to be used by defaut by the SSL_CTX */ -int SSL_CTX_set_cipher_list(SSL_CTX *ctx,char *str) +/** specify the ciphers to be used by default by the SSL_CTX */ +int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str) { STACK_OF(SSL_CIPHER) *sk; @@ -922,7 +934,7 @@ int SSL_CTX_set_cipher_list(SSL_CTX *ctx,char *str) } /** specify the ciphers to be used by the SSL */ -int SSL_set_cipher_list(SSL *s,char *str) +int SSL_set_cipher_list(SSL *s,const char *str) { STACK_OF(SSL_CIPHER) *sk; @@ -1203,7 +1215,7 @@ void SSL_CTX_free(SSL_CTX *a) sk_X509_pop_free(a->extra_certs,X509_free); if (a->comp_methods != NULL) sk_SSL_COMP_pop_free(a->comp_methods,SSL_COMP_free); - Free((char *)a); + Free(a); } void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb) @@ -1350,7 +1362,7 @@ X509 *ssl_get_server_send_cert(SSL *s) c=s->cert; ssl_set_cert_masks(c, s->s3->tmp.new_cipher); alg=s->s3->tmp.new_cipher->algorithms; - is_export=SSL_IS_EXPORT(alg); + is_export=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher); mask=is_export?c->export_mask:c->mask; kalg=alg&(SSL_MKEY_MASK|SSL_AUTH_MASK); @@ -1603,7 +1615,7 @@ SSL_METHOD *ssl_bad_method(int ver) return(NULL); } -char *SSL_get_version(SSL *s) +const char *SSL_get_version(SSL *s) { if (s->version == TLS1_VERSION) return("TLSv1"); @@ -1907,8 +1919,8 @@ long SSL_get_verify_result(SSL *ssl) return(ssl->verify_result); } -int SSL_get_ex_new_index(long argl,char *argp,int (*new_func)(), - int (*dup_func)(),void (*free_func)()) +int SSL_get_ex_new_index(long argl,void *argp,CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func,CRYPTO_EX_free *free_func) { ssl_meth_num++; return(CRYPTO_get_ex_new_index(ssl_meth_num-1, @@ -1925,8 +1937,8 @@ void *SSL_get_ex_data(SSL *s,int idx) return(CRYPTO_get_ex_data(&s->ex_data,idx)); } -int SSL_CTX_get_ex_new_index(long argl,char *argp,int (*new_func)(), - int (*dup_func)(),void (*free_func)()) +int SSL_CTX_get_ex_new_index(long argl,void *argp,CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func,CRYPTO_EX_free *free_func) { ssl_ctx_meth_num++; return(CRYPTO_get_ex_new_index(ssl_ctx_meth_num-1, @@ -1975,13 +1987,23 @@ int SSL_want(SSL *s) void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx,RSA *(*cb)(SSL *ssl, int is_export, int keylength)) - { SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA_CB,0,(char *)cb); } + { + union rsa_fn_to_char_u rsa_tmp_cb; + + rsa_tmp_cb.fn_p = cb; + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA_CB,0,rsa_tmp_cb.char_p); + } #endif #ifndef NO_RSA void SSL_set_tmp_rsa_callback(SSL *ssl,RSA *(*cb)(SSL *ssl,int is_export, int keylength)) - { SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA_CB,0,(char *)cb); } + { + union rsa_fn_to_char_u rsa_tmp_cb; + + rsa_tmp_cb.fn_p = cb; + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA_CB,0,rsa_tmp_cb.char_p); + } #endif #ifdef DOXYGEN @@ -2008,11 +2030,21 @@ RSA *cb(SSL *ssl,int is_export,int keylength) #ifndef NO_DH void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,DH *(*dh)(SSL *ssl,int is_export, int keylength)) - { SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH_CB,0,(char *)dh); } + { + union dh_fn_to_char_u dh_tmp_cb; + + dh_tmp_cb.fn_p = dh; + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH_CB,0,dh_tmp_cb.char_p); + } void SSL_set_tmp_dh_callback(SSL *ssl,DH *(*dh)(SSL *ssl,int is_export, int keylength)) - { SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH_CB,0,(char *)dh); } + { + union dh_fn_to_char_u dh_tmp_cb; + + dh_tmp_cb.fn_p = dh; + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH_CB,0,dh_tmp_cb.char_p); + } #endif #if defined(_WINDLL) && defined(WIN16)