From: William A. Rowe Jr Date: Fri, 8 Jul 2005 15:55:51 +0000 (+0000) Subject: Resolve 0.9.6/0.9.7/0.9.8 OpenSSL const discrepancies X-Git-Tag: 2.0.55~133 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa1b598262f12d4be952758d1b4fede992030cf3;p=thirdparty%2Fapache%2Fhttpd.git Resolve 0.9.6/0.9.7/0.9.8 OpenSSL const discrepancies Reviewed by: jorton, bnichols, wrowe git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@209825 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c index 7da4e96a223..131abf635e4 100644 --- a/modules/ssl/ssl_engine_init.c +++ b/modules/ssl/ssl_engine_init.c @@ -705,7 +705,7 @@ static int ssl_server_import_cert(server_rec *s, { SSLModConfigRec *mc = myModConfig(s); ssl_asn1_t *asn1; - unsigned char *ptr; + MODSSL_D2I_X509_CONST unsigned char *ptr; const char *type = ssl_asn1_keystr(idx); X509 *cert; @@ -743,7 +743,7 @@ static int ssl_server_import_key(server_rec *s, { SSLModConfigRec *mc = myModConfig(s); ssl_asn1_t *asn1; - unsigned char *ptr; + MODSSL_D2I_PrivateKey_CONST unsigned char *ptr; const char *type = ssl_asn1_keystr(idx); int pkey_type = (idx == SSL_AIDX_RSA) ? EVP_PKEY_RSA : EVP_PKEY_DSA; EVP_PKEY *pkey; diff --git a/modules/ssl/ssl_scache_dbm.c b/modules/ssl/ssl_scache_dbm.c index 81f555ac998..9e5632e9ea4 100644 --- a/modules/ssl/ssl_scache_dbm.c +++ b/modules/ssl/ssl_scache_dbm.c @@ -193,7 +193,7 @@ SSL_SESSION *ssl_scache_dbm_retrieve(server_rec *s, UCHAR *id, int idlen) apr_datum_t dbmkey; apr_datum_t dbmval; SSL_SESSION *sess = NULL; - UCHAR *ucpData; + MODSSL_D2I_SSL_SESSION_CONST unsigned char *ucpData; int nData; time_t expiry; time_t now; @@ -234,13 +234,15 @@ SSL_SESSION *ssl_scache_dbm_retrieve(server_rec *s, UCHAR *id, int idlen) /* parse resulting data */ nData = dbmval.dsize-sizeof(time_t); - ucpData = (UCHAR *)malloc(nData); + ucpData = malloc(nData); if (ucpData == NULL) { apr_dbm_close(dbm); ssl_mutex_off(s); return NULL; } - memcpy(ucpData, (char *)dbmval.dptr+sizeof(time_t), nData); + /* Cast needed, ucpData may be const */ + memcpy((unsigned char *)ucpData, + (char *)dbmval.dptr + sizeof(time_t), nData); memcpy(&expiry, dbmval.dptr, sizeof(time_t)); apr_dbm_close(dbm); diff --git a/modules/ssl/ssl_scache_shmcb.c b/modules/ssl/ssl_scache_shmcb.c index 377821c7e4a..946cb9df9aa 100644 --- a/modules/ssl/ssl_scache_shmcb.c +++ b/modules/ssl/ssl_scache_shmcb.c @@ -1203,7 +1203,7 @@ static SSL_SESSION *shmcb_lookup_session_id( SHMCBHeader *header; SSL_SESSION *pSession = NULL; unsigned int curr_pos, loop, count; - unsigned char *ptr; + MODSSL_D2I_SSL_SESSION_CONST unsigned char *ptr; time_t now; ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, @@ -1281,7 +1281,7 @@ static BOOL shmcb_remove_session_id( SHMCBIndex *idx; SHMCBHeader *header; unsigned int curr_pos, loop, count; - unsigned char *ptr; + MODSSL_D2I_SSL_SESSION_CONST unsigned char *ptr; BOOL to_return = FALSE; ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, diff --git a/modules/ssl/ssl_toolkit_compat.h b/modules/ssl/ssl_toolkit_compat.h index 33f88e61c99..d20f3315391 100644 --- a/modules/ssl/ssl_toolkit_compat.h +++ b/modules/ssl/ssl_toolkit_compat.h @@ -69,6 +69,21 @@ #define MODSSL_CLIENT_CERT_CB_ARG_TYPE X509 #define MODSSL_PCHAR_CAST +/* ...shifting sands of openssl... */ +#if (OPENSSL_VERSION_NUMBER >= 0x0090707f) +# define MODSSL_D2I_SSL_SESSION_CONST const +#else +# define MODSSL_D2I_SSL_SESSION_CONST +#endif + +#if (OPENSSL_VERSION_NUMBER >= 0x00908000) +# define MODSSL_D2I_PrivateKey_CONST const +# define MODSSL_D2I_X509_CONST const +#else +# define MODSSL_D2I_PrivateKey_CONST +# define MODSSL_D2I_X509_CONST +#endif + #define modssl_X509_verify_cert X509_verify_cert typedef int (modssl_read_bio_cb_fn)(char*,int,int,void*); @@ -123,6 +138,9 @@ typedef int (modssl_read_bio_cb_fn)(char*,int,int,void*); #define MODSSL_INFO_CB_ARG_TYPE SSL* #define MODSSL_CLIENT_CERT_CB_ARG_TYPE void #define MODSSL_PCHAR_CAST (char *) +#define MODSSL_D2I_SSL_SESSION_CONST +#define MODSSL_D2I_PrivateKey_CONST +#define MODSSL_D2I_X509_CONST typedef int (modssl_read_bio_cb_fn)(char*,int,int);