]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge r1874011, r1874055, r1874062 from trunk
authorChristophe Jaillet <jailletc36@apache.org>
Fri, 25 Sep 2020 21:14:33 +0000 (21:14 +0000)
committerChristophe Jaillet <jailletc36@apache.org>
Fri, 25 Sep 2020 21:14:33 +0000 (21:14 +0000)
   * event, worker: avoid UBSan exception calling memcpy(,NULL,0) at startup.

Submitted by: jorton, jailletc36, ylavic
Reviewed by: jailletc36, rpluem, jorton
Backported by: jailletc36

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

server/mpm/event/event.c
server/mpm/worker/worker.c

index 1cba5d406af2509c12f5714a3bfab355efa7c1ac..5f31a88fa24d527ff7d4ae497e8687f2e7739cc1 100644 (file)
@@ -3335,8 +3335,9 @@ static int event_open_logs(apr_pool_t * p, apr_pool_t * plog,
             new_max = num_buckets;
         }
         new_ptr = (int *)apr_palloc(ap_pglobal, new_max * sizeof(int));
-        memcpy(new_ptr, retained->idle_spawn_rate,
-               retained->mpm->num_buckets * sizeof(int));
+        if (retained->idle_spawn_rate) /* NULL at startup */
+            memcpy(new_ptr, retained->idle_spawn_rate,
+                   retained->mpm->num_buckets * sizeof(int));
         retained->idle_spawn_rate = new_ptr;
         retained->mpm->max_buckets = new_max;
     }
index 316ebfebad7467c0378cd61d42dcbc14a0925f14..ccaeeba9ce5d3ed93748c82e906739444ef715fb 100644 (file)
@@ -1962,8 +1962,9 @@ static int worker_open_logs(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp,
             new_max = num_buckets;
         }
         new_ptr = (int *)apr_palloc(ap_pglobal, new_max * sizeof(int));
-        memcpy(new_ptr, retained->idle_spawn_rate,
-               retained->mpm->num_buckets * sizeof(int));
+        if (retained->idle_spawn_rate) /* NULL at startup */
+            memcpy(new_ptr, retained->idle_spawn_rate,
+                   retained->mpm->num_buckets * sizeof(int));
         retained->idle_spawn_rate = new_ptr;
         retained->mpm->max_buckets = new_max;
     }