altarch-user / rpms / httpd

Forked from rpms/httpd 2 years ago
Clone

Blame SOURCES/httpd-2.4.6-CVE-2017-3169.patch

008793
diff --git a/modules/ssl/ssl_engine_io.c b/modules/ssl/ssl_engine_io.c
008793
index 85c6ce7..4a9fc9a 100644
008793
--- a/modules/ssl/ssl_engine_io.c
008793
+++ b/modules/ssl/ssl_engine_io.c
008793
@@ -834,19 +834,20 @@ static apr_status_t ssl_filter_write(ap_filter_t *f,
008793
  * establish an outgoing SSL connection. */
008793
 #define MODSSL_ERROR_BAD_GATEWAY (APR_OS_START_USERERR + 1)
008793
 
008793
-static void ssl_io_filter_disable(SSLConnRec *sslconn, ap_filter_t *f)
008793
+static void ssl_io_filter_disable(SSLConnRec *sslconn, 
008793
+                                  bio_filter_in_ctx_t *inctx)
008793
 {
008793
-    bio_filter_in_ctx_t *inctx = f->ctx;
008793
     SSL_free(inctx->ssl);
008793
     sslconn->ssl = NULL;
008793
     inctx->ssl = NULL;
008793
     inctx->filter_ctx->pssl = NULL;
008793
 }
008793
 
008793
-static apr_status_t ssl_io_filter_error(ap_filter_t *f,
008793
+static apr_status_t ssl_io_filter_error(bio_filter_in_ctx_t *inctx,
008793
                                         apr_bucket_brigade *bb,
008793
                                         apr_status_t status)
008793
 {
008793
+    ap_filter_t *f = inctx->f;
008793
     SSLConnRec *sslconn = myConnConfig(f->c);
008793
     apr_bucket *bucket;
008793
     int send_eos = 1;
008793
@@ -860,7 +861,7 @@ static apr_status_t ssl_io_filter_error(ap_filter_t *f,
008793
             ssl_log_ssl_error(SSLLOG_MARK, APLOG_INFO, sslconn->server);
008793
 
008793
             sslconn->non_ssl_request = NON_SSL_SEND_HDR_SEP;
008793
-            ssl_io_filter_disable(sslconn, f);
008793
+            ssl_io_filter_disable(sslconn, inctx);
008793
 
008793
             /* fake the request line */
008793
             bucket = HTTP_ON_HTTPS_PORT_BUCKET(f->c->bucket_alloc);
008793
@@ -1342,7 +1343,7 @@ static apr_status_t ssl_io_filter_input(ap_filter_t *f,
008793
      * rather than have SSLEngine On configured.
008793
      */
008793
     if ((status = ssl_io_filter_handshake(inctx->filter_ctx)) != APR_SUCCESS) {
008793
-        return ssl_io_filter_error(f, bb, status);
008793
+        return ssl_io_filter_error(inctx, bb, status);
008793
     }
008793
 
008793
     if (is_init) {
008793
@@ -1396,7 +1397,7 @@ static apr_status_t ssl_io_filter_input(ap_filter_t *f,
008793
 
008793
     /* Handle custom errors. */
008793
     if (status != APR_SUCCESS) {
008793
-        return ssl_io_filter_error(f, bb, status);
008793
+        return ssl_io_filter_error(inctx, bb, status);
008793
     }
008793
 
008793
     /* Create a transient bucket out of the decrypted data. */
008793
@@ -1613,7 +1614,7 @@ static apr_status_t ssl_io_filter_output(ap_filter_t *f,
008793
     inctx->block = APR_BLOCK_READ;
008793
 
008793
     if ((status = ssl_io_filter_handshake(filter_ctx)) != APR_SUCCESS) {
008793
-        return ssl_io_filter_error(f, bb, status);
008793
+        return ssl_io_filter_error(inctx, bb, status);
008793
     }
008793
 
008793
     while (!APR_BRIGADE_EMPTY(bb)) {