--"Ralf S. Engelschall" <[EMAIL PROTECTED]> wrote:

On Fri, Mar 21, 2003, Ralf S. Engelschall wrote:

> I can see the same segmentation fault :
[...]

Ok, can the people who are able to reproduce the segfault problem, please apply the following patch, retry it and give feedback? I think these two bugfixes should fix the problem now. If yes, I'll release mod_ssl 2.8.14 with it. Thanks for your help.


The patch fixed the problem for me (no php, RH 7.3.)


--
Ed Kubaitis - [EMAIL PROTECTED]
CITES/STS - University of Illinois at Urbana-Champaign


Index: ssl_engine_kernel.c
===================================================================
RCS file:
/e/modssl/cvs/mod_ssl/pkg.apache/src/modules/ssl/ssl_engine_kernel.c,v
retrieving revision 1.136
diff -u -d -r1.136 ssl_engine_kernel.c
--- ssl_engine_kernel.c 19 Nov 2002 13:57:01 -0000      1.136
+++ ssl_engine_kernel.c 21 Mar 2003 12:39:47 -0000
@@ -1048,13 +1048,15 @@
                         "Re-negotiation handshake failed: Client
verification failed");                  return FORBIDDEN;
             }
+            cert = SSL_get_peer_certificate(ssl);
             if (   dc->nVerifyClient == SSL_CVERIFY_REQUIRE
-                && (cert = SSL_get_peer_certificate(ssl)) == NULL) {
+                && cert == NULL) {
                 ssl_log(r->server, SSL_LOG_ERROR,
                         "Re-negotiation handshake failed: Client
certificate missing"); -                X509_free(cert);
                 return FORBIDDEN;
             }
+            if (cert != NULL)
+                X509_free(cert);
         }
     }

Index: ssl_engine_vars.c
===================================================================
RCS file:
/e/modssl/cvs/mod_ssl/pkg.apache/src/modules/ssl/ssl_engine_vars.c,v
retrieving revision 1.53
diff -u -d -r1.53 ssl_engine_vars.c
--- ssl_engine_vars.c   29 Oct 2002 13:00:46 -0000      1.53
+++ ssl_engine_vars.c   21 Mar 2003 12:40:12 -0000
@@ -322,7 +322,9 @@
     else if (ssl != NULL && strlen(var) > 7 && strcEQn(var, "SERVER_",
7)) {          if ((xs = SSL_get_certificate(ssl)) != NULL) {
             result = ssl_var_lookup_ssl_cert(p, xs, var+7);
-            X509_free(xs);
+            /* SSL_get_certificate() as of OpenSSL 0.9.7a does not
increment +               the reference count the same way
SSL_get_peer_certificate does, +               so no need to
X509_free(xs) the stuff here. */
         }
     }
     return result;

                                       Ralf S. Engelschall
                                       [EMAIL PROTECTED]
                                       www.engelschall.com

______________________________________________________________________
Apache Interface to OpenSSL (mod_ssl)                   www.modssl.org
User Support Mailing List                      [EMAIL PROTECTED]
Automated List Manager                            [EMAIL PROTECTED]



______________________________________________________________________ Apache Interface to OpenSSL (mod_ssl) www.modssl.org User Support Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]

Reply via email to