From: Jim Jagielski Date: Thu, 13 Sep 2007 12:27:26 +0000 (+0000) Subject: Merge r574884 from trunk: X-Git-Tag: 2.0.62~97 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f5435167d711c8da7d5019f6a823645537934ce;p=thirdparty%2Fapache%2Fhttpd.git Merge r574884 from trunk: Resolve storage of process-lifespan version strings for OpenSSL, while using request-lifespan copies for manipulation. Reviewed by RPleum, ZHar'El Submitted by: wrowe Reviewed by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@575287 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/STATUS b/STATUS index 976ec4c9c10..257f8f6130a 100644 --- a/STATUS +++ b/STATUS @@ -116,13 +116,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_ssl: Resolve storage of process-lifespan version strings for OpenSSL, - while using request-lifespan copies for manipulation - Trunk version of patch: - http://svn.apache.org/viewcvs.cgi?rev=574884&view=rev - Backport version for 2.0.x of patch: - http://people.apache.org/~wrowe/ssl_version_pool_fix-2.0.patch - +1: wrowe, rpluem, jim PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ please place SVN revisions from trunk here, so it is easy to diff --git a/modules/ssl/ssl_engine_vars.c b/modules/ssl/ssl_engine_vars.c index 1195a82845f..9eca42afa69 100644 --- a/modules/ssl/ssl_engine_vars.c +++ b/modules/ssl/ssl_engine_vars.c @@ -46,7 +46,7 @@ static char *ssl_var_lookup_ssl_cert_PEM(apr_pool_t *p, X509 *xs); static char *ssl_var_lookup_ssl_cert_verify(apr_pool_t *p, conn_rec *c); static char *ssl_var_lookup_ssl_cipher(apr_pool_t *p, conn_rec *c, char *var); static void ssl_var_lookup_ssl_cipher_bits(SSL *ssl, int *usekeysize, int *algkeysize); -static char *ssl_var_lookup_ssl_version(apr_pool_t *p, char *var); +static char *ssl_var_lookup_ssl_version(apr_pool_t *pp, apr_pool_t *p, char *var); static int ssl_is_https(conn_rec *c) { @@ -166,7 +166,7 @@ char *ssl_var_lookup(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, */ if (result == NULL) { if (strlen(var) > 12 && strcEQn(var, "SSL_VERSION_", 12)) - result = ssl_var_lookup_ssl_version(p, var+12); + result = ssl_var_lookup_ssl_version(s->process->pool, p, var+12); else if (strcEQ(var, "SERVER_SOFTWARE")) result = (char *)ap_get_server_version(); else if (strcEQ(var, "API_VERSION")) { @@ -247,7 +247,8 @@ static char *ssl_var_lookup_ssl(apr_pool_t *p, conn_rec *c, char *var) ssl = sslconn->ssl; if (strlen(var) > 8 && strcEQn(var, "VERSION_", 8)) { - result = ssl_var_lookup_ssl_version(p, var+8); + result = ssl_var_lookup_ssl_version(c->base_server->process->pool, + p, var+8); } else if (ssl != NULL && strcEQ(var, "PROTOCOL")) { result = (char *)SSL_get_version(ssl); @@ -567,7 +568,7 @@ static void ssl_var_lookup_ssl_cipher_bits(SSL *ssl, int *usekeysize, int *algke return; } -static char *ssl_var_lookup_ssl_version(apr_pool_t *p, char *var) +static char *ssl_var_lookup_ssl_version(apr_pool_t *pp, apr_pool_t *p, char *var) { static char interface[] = "mod_ssl/" MOD_SSL_VERSION; static char library_interface[] = SSL_LIBRARY_TEXT; @@ -576,7 +577,7 @@ static char *ssl_var_lookup_ssl_version(apr_pool_t *p, char *var) if (!library) { char *cp, *cp2; - library = apr_pstrdup(p, SSL_LIBRARY_DYNTEXT); + library = apr_pstrdup(pp, SSL_LIBRARY_DYNTEXT); if ((cp = strchr(library, ' ')) != NULL) { *cp = '/'; if ((cp2 = strchr(cp, ' ')) != NULL)