]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merged /httpd/httpd/trunk:r1869392
authorStefan Eissing <icing@apache.org>
Tue, 5 Nov 2019 10:22:33 +0000 (10:22 +0000)
committerStefan Eissing <icing@apache.org>
Tue, 5 Nov 2019 10:22:33 +0000 (10:22 +0000)
  *) mod_md v2.2.3:
     - Configuring MDCAChallenges replaces any previous existing challenge configuration. It
       had been additive before which was not the intended behaviour. [@mkauf]
     - Fixing order of ACME challenges used when nothing else configured. Code now behaves as
       documented for `MDCAChallenges`. Fixes #156. Thanks again to @mkauf for finding this.
     - Fixing a potential, low memory null pointer dereference [thanks to @uhliarik].
     - Fixing an incompatibility with a change in libcurl v7.66.0 that added unwanted
       "transfer-encoding" to POST requests. This failed in directy communication with
       Let's Encrypt boulder server. Thanks to @mkauf for finding and fixing. [Stefan Eissing]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1869394 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/md/md_acme_drive.c
modules/md/md_curl.c
modules/md/md_http.c
modules/md/md_version.h
modules/md/mod_md_config.c

diff --git a/CHANGES b/CHANGES
index d94344ed195518313a782623fc95133bb42c17c3..d2e959c1bacaf8bb6267129678e9d4b12a1636f7 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,15 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.4.42
+   
+  *) mod_md v2.2.3: 
+     - Configuring MDCAChallenges replaces any previous existing challenge configuration. It
+       had been additive before which was not the intended behaviour. [@mkauf]
+     - Fixing order of ACME challenges used when nothing else configured. Code now behaves as
+       documented for `MDCAChallenges`. Fixes #156. Thanks again to @mkauf for finding this.
+     - Fixing a potential, low memory null pointer dereference [thanks to @uhliarik].
+     - Fixing an incompatibility with a change in libcurl v7.66.0 that added unwanted
+       "transfer-encoding" to POST requests. This failed in directy communication with
+       Let's Encrypt boulder server. Thanks to @mkauf for finding and fixing. [Stefan Eissing]
 
   *) mod_md: Adding the several new features.
      The module offers an implementation of OCSP Stapling that can replace fully or
index b9c0c6d18562331839a029e0e3ffbd5cd398fac2..b1db503f966f021ea710c191f44104674e42eff1 100644 (file)
@@ -530,8 +530,8 @@ static apr_status_t acme_driver_init(md_proto_driver_t *d, md_result_t *result)
     }
     else {
         /* free to chose. Add all we support and see what we get offered */
-        APR_ARRAY_PUSH(ad->ca_challenges, const char*) = MD_AUTHZ_TYPE_HTTP01;
         APR_ARRAY_PUSH(ad->ca_challenges, const char*) = MD_AUTHZ_TYPE_TLSALPN01;
+        APR_ARRAY_PUSH(ad->ca_challenges, const char*) = MD_AUTHZ_TYPE_HTTP01;
         APR_ARRAY_PUSH(ad->ca_challenges, const char*) = MD_AUTHZ_TYPE_DNS01;
 
         if (!d->can_http && !d->can_https 
index 9c4be13b691f91c0149da96daf31b85535654446..ed40e7604e83f46d23a1a69165b6431d9969781a 100644 (file)
@@ -294,6 +294,12 @@ static apr_status_t internals_setup(md_http_request_t *req)
         curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, timeout_sec(req->timeout.stalled));
     }
     
+    if (req->body_len >= 0) {
+        /* set the Content-Length */
+        curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)req->body_len);
+        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)req->body_len);
+    }
+    
     if (req->user_agent) {
         curl_easy_setopt(curl, CURLOPT_USERAGENT, req->user_agent);
     }
index 027de593d5c008413084cb2e8a7ebaa9154d54b5..bafa5913fd35d7ac57ba929f44d187ec707b8361 100644 (file)
@@ -207,19 +207,8 @@ void md_http_set_on_response_cb(md_http_request_t *req, md_http_response_cb *cb,
     req->cb.on_response_data = baton;
 }
 
-static void req_init_cl(md_http_request_t *req)
-{
-    if (req->body_len == 0 && apr_strnatcasecmp("GET", req->method)) {
-        apr_table_setn(req->headers, "Content-Length", "0");
-    }
-    else if (req->body_len > 0) {
-        apr_table_setn(req->headers, "Content-Length", apr_off_t_toa(req->pool, req->body_len));
-    }
-}
-
 apr_status_t md_http_perform(md_http_request_t *req)
 {
-    req_init_cl(req);
     return req->http->impl->perform(req);
 }
 
@@ -232,11 +221,8 @@ static apr_status_t proxy_nextreq(md_http_request_t **preq, void *baton,
                                       md_http_t *http, int in_flight)
 {
     nextreq_proxy_t *proxy = baton;
-    apr_status_t rv;
     
-    rv = proxy->nextreq(preq, proxy->baton, http, in_flight);
-    if (APR_SUCCESS == rv) req_init_cl(*preq);
-    return rv;
+    return proxy->nextreq(preq, proxy->baton, http, in_flight);
 }
 
 apr_status_t md_http_multi_perform(md_http_t *http, md_http_next_req *nextreq, void *baton)
index bff92fcf5a1a6dca15fb223731f74e375a588de3..331e403d72184847a70343fe30d9c6dfee18a9cd 100644 (file)
@@ -27,7 +27,7 @@
  * @macro
  * Version number of the md module as c string
  */
-#define MOD_MD_VERSION "2.2.1"
+#define MOD_MD_VERSION "2.2.3"
 
 /**
  * @macro
@@ -35,7 +35,7 @@
  * release. This is a 24 bit number with 8 bits for major number, 8 bits
  * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
  */
-#define MOD_MD_VERSION_NUM 0x020201
+#define MOD_MD_VERSION_NUM 0x020203
 
 #define MD_ACME_DEF_URL    "https://acme-v02.api.letsencrypt.org/directory"
 
index baa20cc37fac4b6d2d93d5d8e7e193686bf314f6..8d78af0c4b154858331b1e583406a85003ea75e8 100644 (file)
@@ -714,7 +714,10 @@ static const char *md_config_set_cha_tyes(cmd_parms *cmd, void *dc,
     pcha = &config->ca_challenges; 
     
     ca_challenges = *pcha;
-    if (!ca_challenges) {
+    if (ca_challenges) {
+        apr_array_clear(ca_challenges);
+    }
+    else {
         *pcha = ca_challenges = apr_array_make(cmd->pool, 5, sizeof(const char *));
     }
     for (i = 0; i < argc; ++i) {