components/apache2/patches/CVE-2014-0226.patch
author Stefan Teleman <stefan.teleman@oracle.com>
Thu, 25 Sep 2014 07:39:44 -0700
branchs11-update
changeset 3337 85a6014ba6b7
parent 3269 56b0e19454ba
permissions -rw-r--r--
19682871 problem in UTILITY/BASH
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3269
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
Patch origin: upstream
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
Patch status: will be part of next version
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
http://svn.apache.org/viewvc?view=revision&revision=1610515
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
--- include/ap_mmn.h	2014/07/14 20:23:27	1610514
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
+++ include/ap_mmn.h	2014/07/14 20:34:32	1610515
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
@@ -151,6 +151,7 @@
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
  * 20051115.31 (2.2.23) Add forcerecovery to proxy_balancer_shared struct
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
  * 20051115.32 (2.2.24) Add ap_get_exec_line
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
  * 20051115.33 (2.2.24) Add ap_pregsub_ex()
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
+ * 20051115.34 (2.2.28) Add ap_copy_scoreboard_worker()
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
  */
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
 
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
 #define MODULE_MAGIC_COOKIE 0x41503232UL /* "AP22" */
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
@@ -158,7 +159,7 @@
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
 #define MODULE_MAGIC_NUMBER_MAJOR 20051115
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
 #endif
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
-#define MODULE_MAGIC_NUMBER_MINOR 33                    /* 0...n */
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
+#define MODULE_MAGIC_NUMBER_MINOR 34                    /* 0...n */
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
 
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
 /**
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
  * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
--- include/scoreboard.h	2014/07/14 20:23:27	1610514
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
+++ include/scoreboard.h	2014/07/14 20:34:32	1610515
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
@@ -189,7 +189,24 @@
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
                                                     int status, request_rec *r);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
 void ap_time_process_request(ap_sb_handle_t *sbh, int status);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
 
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
+/** Return a pointer to the worker_score for a given child, thread pair.
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
+ * @param child_num The child number.
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
+ * @param thread_num The thread number.
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
+ * @return A pointer to the worker_score structure.
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    35
+ * @deprecated This function is deprecated, use ap_copy_scoreboard_worker instead. 
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    36
+ */
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    37
 AP_DECLARE(worker_score *) ap_get_scoreboard_worker(int x, int y);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    38
+
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    39
+/** Copy the contents of a worker's scoreboard entry.  The contents of
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    40
+ * the worker_score structure are copied verbatim into the dest
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    41
+ * structure.
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    42
+ * @param dest Output parameter.
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    43
+ * @param child_num The child number.
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    44
+ * @param thread_num The thread number.
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    45
+ */
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    46
+AP_DECLARE(void) ap_copy_scoreboard_worker(worker_score *dest,
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    47
+                                           int child_num, int thread_num);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    48
+
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    49
 AP_DECLARE(process_score *) ap_get_scoreboard_process(int x);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    50
 AP_DECLARE(global_score *) ap_get_scoreboard_global(void);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    51
 AP_DECLARE(lb_score *) ap_get_scoreboard_lb(int lb_num);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    52
--- modules/generators/mod_status.c	2014/07/14 20:23:27	1610514
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    53
+++ modules/generators/mod_status.c	2014/07/14 20:34:32	1610515
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    54
@@ -241,7 +241,7 @@
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    55
 #endif
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    56
     int short_report;
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    57
     int no_table_report;
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    58
-    worker_score *ws_record;
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    59
+    worker_score *ws_record = apr_palloc(r->pool, sizeof *ws_record);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    60
     process_score *ps_record;
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    61
     char *stat_buffer;
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    62
     pid_t *pid_buffer, worker_pid;
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    63
@@ -333,7 +333,7 @@
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    64
         for (j = 0; j < thread_limit; ++j) {
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    65
             int indx = (i * thread_limit) + j;
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    66
 
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    67
-            ws_record = ap_get_scoreboard_worker(i, j);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    68
+            ap_copy_scoreboard_worker(ws_record, i, j);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    69
             res = ws_record->status;
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    70
             stat_buffer[indx] = status_flags[res];
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    71
 
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    72
--- server/scoreboard.c	2014/07/14 20:23:27	1610514
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    73
+++ server/scoreboard.c	2014/07/14 20:34:32	1610515
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    74
@@ -510,6 +510,21 @@
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    75
     return &ap_scoreboard_image->servers[x][y];
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    76
 }
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    77
 
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    78
+AP_DECLARE(void) ap_copy_scoreboard_worker(worker_score *dest, 
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    79
+                                           int child_num,
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    80
+                                           int thread_num)
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    81
+{
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    82
+    worker_score *ws = ap_get_scoreboard_worker(child_num, thread_num);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    83
+
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    84
+    memcpy(dest, ws, sizeof *ws);
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    85
+
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    86
+    /* For extra safety, NUL-terminate the strings returned, though it
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    87
+     * should be true those last bytes are always zero anyway. */
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    88
+    dest->client[sizeof(dest->client) - 1] = '\0';
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    89
+    dest->request[sizeof(dest->request) - 1] = '\0';
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    90
+    dest->vhost[sizeof(dest->vhost) - 1] = '\0';
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    91
+}
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    92
+
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    93
 AP_DECLARE(process_score *) ap_get_scoreboard_process(int x)
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    94
 {
56b0e19454ba 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    95
     if ((x < 0) || (server_limit < x)) {