You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2016/12/22 19:20:26 UTC

svn commit: r1775705 - in /httpd/httpd/branches/2.2.x-merge-http-strict: ./ server/protocol.c

Author: wrowe
Date: Thu Dec 22 19:20:25 2016
New Revision: 1775705

URL: http://svn.apache.org/viewvc?rev=1775705&view=rev
Log:
Backports: r1185385
Submitted by: sf
Downgrade some more log messages indicating client errors from level error to
info. Add log messages for various reasons to return HTTP_BAD_REQUEST.

Modified:
    httpd/httpd/branches/2.2.x-merge-http-strict/   (props changed)
    httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c

Propchange: httpd/httpd/branches/2.2.x-merge-http-strict/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Dec 22 19:20:25 2016
@@ -1,2 +1,2 @@
 /httpd/httpd/branches/2.4.x:1555538,1555559,1648845,1649003,1681034,1682929,1682939
-/httpd/httpd/trunk:290940,395552,417988,451572,501364,583817,583830,611483,630858,639005,639010,647395,657354,657459,660461,660566,664330,678761,680082,681190,682369,683626,685112,686805,686809,687099,687754,693120,693392,693727-693728,696006,697093,706318,707163,708902,711421,713575,719357,720250,729316-729317,729586,732414,732504,732816,732832,733127,733134,733218-733219,734710,743589,755190,756671,756675,756678,756683,757741,761329,763394,764239,768535,769809,771587,771610,776325,777042,777091,778438-778439,778531,778942,780648,780655,780692,780697,780699,785457,785661,790587,803704,819480,823536,823563,834378,835046,891282,892678,892808,900022,932791,942209,952823,953311,955966,979120,981084,992625,1026743,1031551,1040304,1040373,1057372,1058192,1070096,1082189,1082196,1090645,1100511,1172732,1178566,1200040,1200372,1200374,1213380,1222335,1223048,1231446,1244211,1294306,1299738,1300171,1301111,1308862,1327036,1327080,1328133,1328325-1328326,1345319,1348656,1349905,1352912,13631
 83,1363186,1366344,1367778,1368131,1368396,1369568,1395225,1398066,1400700,1408402,1410681,1413732,1414094,1416889,1418752,1422234,1422253,1435178,1447426,1470940,1475878,1476604,1476621,1476642,1476644-1476645,1477530,1484852,1485409,1485668,1490994,1493330,1496429,1500323,1504276,1506714,1509872,1509875,1514215,1524192,1524770,1526168,1526189,1527291,1527295,1527925,1528718,1529559,1529988,1529991,1531505,1532816,1551685,1551714,1552227,1553204,1554276,1554281,1555240,1555555,1556428,1563420,1572092,1572198,1572543,1572611,1572630,1572655,1572663,1572668-1572671,1572896,1572911,1572967,1573224,1573229,1575400,1585090,1586745,1587594,1587639,1588851,1590509,1603156,1604353,1610207,1610311,1610491,1610501,1611165,1611169,1620932,1621453,1643537,1643543,1648840,1649001,1649043,1650310,1650320,1652929,1653997,1657897,1658765,1663647,1664205,1665215,1665218,1665625,1665721,1666363,1674056,1675533,1676654,1677462,1679182,1679470,1680895,1680900,1680942,1681037,1682923,1682937,1684513,16
 85345,1685347,1685349-1685350,1688274,1688536,1688538
+/httpd/httpd/trunk:290940,395552,417988,451572,501364,583817,583830,611483,630858,639005,639010,647395,657354,657459,660461,660566,664330,678761,680082,681190,682369,683626,685112,686805,686809,687099,687754,693120,693392,693727-693728,696006,697093,706318,707163,708902,711421,713575,719357,720250,729316-729317,729586,732414,732504,732816,732832,733127,733134,733218-733219,734710,743589,755190,756671,756675,756678,756683,757741,761329,763394,764239,768535,769809,771587,771610,776325,777042,777091,778438-778439,778531,778942,780648,780655,780692,780697,780699,785457,785661,790587,803704,819480,823536,823563,834378,835046,891282,892678,892808,900022,932791,942209,952823,953311,955966,979120,981084,992625,1026743,1031551,1040304,1040373,1057372,1058192,1070096,1082189,1082196,1090645,1100511,1172732,1178566,1185385,1200040,1200372,1200374,1213380,1222335,1223048,1231446,1244211,1294306,1299738,1300171,1301111,1308862,1327036,1327080,1328133,1328325-1328326,1345319,1348656,1349905,13529
 12,1363183,1363186,1366344,1367778,1368131,1368396,1369568,1395225,1398066,1400700,1408402,1410681,1413732,1414094,1416889,1418752,1422234,1422253,1435178,1447426,1470940,1475878,1476604,1476621,1476642,1476644-1476645,1477530,1484852,1485409,1485668,1490994,1493330,1496429,1500323,1504276,1506714,1509872,1509875,1514215,1524192,1524770,1526168,1526189,1527291,1527295,1527925,1528718,1529559,1529988,1529991,1531505,1532816,1551685,1551714,1552227,1553204,1554276,1554281,1555240,1555555,1556428,1563420,1572092,1572198,1572543,1572611,1572630,1572655,1572663,1572668-1572671,1572896,1572911,1572967,1573224,1573229,1575400,1585090,1586745,1587594,1587639,1588851,1590509,1603156,1604353,1610207,1610311,1610491,1610501,1611165,1611169,1620932,1621453,1643537,1643543,1648840,1649001,1649043,1650310,1650320,1652929,1653997,1657897,1658765,1663647,1664205,1665215,1665218,1665625,1665721,1666363,1674056,1675533,1676654,1677462,1679182,1679470,1680895,1680900,1680942,1681037,1682923,1682937,16
 84513,1685345,1685347,1685349-1685350,1688274,1688536,1688538

Modified: httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c?rev=1775705&r1=1775704&r2=1775705&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c (original)
+++ httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c Thu Dec 22 19:20:25 2016
@@ -702,9 +702,21 @@ static int table_do_fn_check_lengths(voi
                                "\n<pre>\n",
                                ap_escape_html(r->pool, key),
                                "</pre>\n", NULL));
+    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, "Request header exceeds "
+                  "LimitRequestFieldSize after merging: %s", key);
     return 0;
 }
 
+/* get the length of the field name for logging, but no more than 80 bytes */
+#define LOG_NAME_MAX_LEN 80
+static int field_name_len(const char *field)
+{
+    const char *end = ap_strchr_c(field, ':');
+    if (end == NULL || end - field > LOG_NAME_MAX_LEN)
+        return LOG_NAME_MAX_LEN;
+    return end - field;
+}
+
 AP_DECLARE(void) ap_get_mime_headers_core(request_rec *r, apr_bucket_brigade *bb)
 {
     char *last_field = NULL;
@@ -755,6 +767,9 @@ AP_DECLARE(void) ap_get_mime_headers_cor
                 ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, 
                               "Request header exceeds LimitRequestFieldSize: "
                               "%.*s", field_name_len(field), field);
+                ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
+                              "Request header exceeds LimitRequestFieldSize: "
+                              "%.*s", field_name_len(field), field);
             }
             return;
         }
@@ -786,6 +801,10 @@ AP_DECLARE(void) ap_get_mime_headers_cor
                                   "Request header exceeds LimitRequestFieldSize "
                                   "after folding: %.*s",
                                   field_name_len(last_field), last_field);
+                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
+                                  "Request header exceeds LimitRequestFieldSize "
+                                  "after folding: %.*s",
+                                  field_name_len(last_field), last_field);
                     return;
                 }
 
@@ -811,6 +830,9 @@ AP_DECLARE(void) ap_get_mime_headers_cor
                     apr_table_setn(r->notes, "error-notes",
                                    "The number of request header fields "
                                    "exceeds this server's limit.");
+                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
+                                  "Number of request headers exceeds "
+                                  "LimitRequestFields");
                     return;
                 }
 
@@ -829,6 +851,10 @@ AP_DECLARE(void) ap_get_mime_headers_cor
                                   "separator: %.*s", (int)LOG_NAME_MAX_LEN,
                                   last_field);
 
+                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
+                                  "Request header field is missing ':' "
+                                  "separator: %.*s", (int)LOG_NAME_MAX_LEN,
+                                  last_field);
                     return;
                 }
 
@@ -957,12 +983,13 @@ request_rec *ap_read_request(conn_rec *c
         if (r->status == HTTP_REQUEST_URI_TOO_LARGE
             || r->status == HTTP_BAD_REQUEST) {
             if (r->status == HTTP_BAD_REQUEST) {
-                ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
                               "request failed: invalid characters in URI");
             }
             else {
-                ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
-                              "request failed: URI too long (longer than %d)", r->server->limit_req_line);
+                ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
+                              "request failed: URI too long (longer than %d)",
+                              r->server->limit_req_line);
             }
             ap_send_error_response(r, 0);
             ap_update_child_status(conn->sbh, SERVER_BUSY_LOG, r);
@@ -999,7 +1026,7 @@ request_rec *ap_read_request(conn_rec *c
 
         ap_get_mime_headers_core(r, tmp_bb);
         if (r->status != HTTP_OK) {
-            ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+            ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
                           "request failed: error reading the headers");
             ap_send_error_response(r, 0);
             ap_update_child_status(conn->sbh, SERVER_BUSY_LOG, r);
@@ -1046,7 +1073,7 @@ request_rec *ap_read_request(conn_rec *c
              * headers! Have to dink things just to make sure the error message
              * comes through...
              */
-            ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+            ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
                           "client sent invalid HTTP/0.9 request: HEAD %s",
                           r->uri);
             r->header_only = 0;
@@ -1088,7 +1115,7 @@ request_rec *ap_read_request(conn_rec *c
          * a Host: header, and the server MUST respond with 400 if it doesn't.
          */
         r->status = HTTP_BAD_REQUEST;
-        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
                       "client sent HTTP/1.1 request without hostname "
                       "(see RFC2616 section 14.23): %s", r->uri);
     }
@@ -1310,7 +1337,7 @@ AP_DECLARE(int) ap_get_basic_auth_pw(req
 
     if (strcasecmp(ap_getword(r->pool, &auth_line, ' '), "Basic")) {
         /* Client tried to authenticate using wrong auth scheme */
-        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
                       "client used wrong authentication scheme: %s", r->uri);
         ap_note_basic_auth_failure(r);
         return HTTP_UNAUTHORIZED;



Re: svn commit: r1775705 - in /httpd/httpd/branches/2.2.x-merge-http-strict: ./ server/protocol.c

Posted by William A Rowe Jr <wr...@rowe-clan.net>.
On Thu, Dec 22, 2016 at 6:00 PM, Yann Ylavic <yl...@gmail.com> wrote:

> On Thu, Dec 22, 2016 at 8:20 PM,  <wr...@apache.org> wrote:
> > Author: wrowe
> > Date: Thu Dec 22 19:20:25 2016
> > New Revision: 1775705
> >
> > URL: http://svn.apache.org/viewvc?rev=1775705&view=rev
> > Log:
> > Backports: r1185385
> > Submitted by: sf
> > Downgrade some more log messages indicating client errors from level
> error to
> > info. Add log messages for various reasons to return HTTP_BAD_REQUEST.
>
> Hmm, in 2.2, users are used to get an error message when httpd refuses
> the request (moreover before any module had seen the request).
>
> Is it really 2.2 material?
>
> >
> > Modified: httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c
> > URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x-
> merge-http-strict/server/protocol.c?rev=1775705&r1=
> 1775704&r2=1775705&view=diff
> > ============================================================
> ==================
> > --- httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c
> (original)
> > +++ httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c Thu
> Dec 22 19:20:25 2016
> > @@ -702,9 +702,21 @@ static int table_do_fn_check_lengths(voi
> >                                 "\n<pre>\n",
> >                                 ap_escape_html(r->pool, key),
> >                                 "</pre>\n", NULL));
> > +    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, "Request header exceeds
> "
> > +                  "LimitRequestFieldSize after merging: %s", key);
> >      return 0;
> >  }
> >
> > +/* get the length of the field name for logging, but no more than 80
> bytes */
> > +#define LOG_NAME_MAX_LEN 80
> > +static int field_name_len(const char *field)
> > +{
> > +    const char *end = ap_strchr_c(field, ':');
> > +    if (end == NULL || end - field > LOG_NAME_MAX_LEN)
> > +        return LOG_NAME_MAX_LEN;
> > +    return end - field;
> > +}
> > +
> >  AP_DECLARE(void) ap_get_mime_headers_core(request_rec *r,
> apr_bucket_brigade *bb)
> >  {
> >      char *last_field = NULL;
> > @@ -755,6 +767,9 @@ AP_DECLARE(void) ap_get_mime_headers_cor
> >                  ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> >                                "Request header exceeds
> LimitRequestFieldSize: "
> >                                "%.*s", field_name_len(field), field);
> > +                ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> > +                              "Request header exceeds
> LimitRequestFieldSize: "
> > +                              "%.*s", field_name_len(field), field);
>
> Double logging?
>
> >              }
> >              return;
> >          }
> > @@ -786,6 +801,10 @@ AP_DECLARE(void) ap_get_mime_headers_cor
> >                                    "Request header exceeds
> LimitRequestFieldSize "
> >                                    "after folding: %.*s",
> >                                    field_name_len(last_field),
> last_field);
> > +                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> > +                                  "Request header exceeds
> LimitRequestFieldSize "
> > +                                  "after folding: %.*s",
> > +                                  field_name_len(last_field),
> last_field);
>
> Likewise?
>
> >                      return;
> >                  }
> >
> > @@ -811,6 +830,9 @@ AP_DECLARE(void) ap_get_mime_headers_cor
> >                      apr_table_setn(r->notes, "error-notes",
> >                                     "The number of request header fields
> "
> >                                     "exceeds this server's limit.");
> > +                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> > +                                  "Number of request headers exceeds "
> > +                                  "LimitRequestFields");
> >                      return;
> >                  }
> >
> > @@ -829,6 +851,10 @@ AP_DECLARE(void) ap_get_mime_headers_cor
> >                                    "separator: %.*s",
> (int)LOG_NAME_MAX_LEN,
> >                                    last_field);
> >
> > +                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> > +                                  "Request header field is missing ':' "
> > +                                  "separator: %.*s",
> (int)LOG_NAME_MAX_LEN,
> > +                                  last_field);
>
> Likewise?
>
> >                      return;
> >                  }
>

Yes, doubled merge. Believe I have these cleaned up in r1775774.

Re: svn commit: r1775705 - in /httpd/httpd/branches/2.2.x-merge-http-strict: ./ server/protocol.c

Posted by Yann Ylavic <yl...@gmail.com>.
On Thu, Dec 22, 2016 at 8:20 PM,  <wr...@apache.org> wrote:
> Author: wrowe
> Date: Thu Dec 22 19:20:25 2016
> New Revision: 1775705
>
> URL: http://svn.apache.org/viewvc?rev=1775705&view=rev
> Log:
> Backports: r1185385
> Submitted by: sf
> Downgrade some more log messages indicating client errors from level error to
> info. Add log messages for various reasons to return HTTP_BAD_REQUEST.

Hmm, in 2.2, users are used to get an error message when httpd refuses
the request (moreover before any module had seen the request).

Is it really 2.2 material?

>
> Modified: httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c?rev=1775705&r1=1775704&r2=1775705&view=diff
> ==============================================================================
> --- httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c (original)
> +++ httpd/httpd/branches/2.2.x-merge-http-strict/server/protocol.c Thu Dec 22 19:20:25 2016
> @@ -702,9 +702,21 @@ static int table_do_fn_check_lengths(voi
>                                 "\n<pre>\n",
>                                 ap_escape_html(r->pool, key),
>                                 "</pre>\n", NULL));
> +    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, "Request header exceeds "
> +                  "LimitRequestFieldSize after merging: %s", key);
>      return 0;
>  }
>
> +/* get the length of the field name for logging, but no more than 80 bytes */
> +#define LOG_NAME_MAX_LEN 80
> +static int field_name_len(const char *field)
> +{
> +    const char *end = ap_strchr_c(field, ':');
> +    if (end == NULL || end - field > LOG_NAME_MAX_LEN)
> +        return LOG_NAME_MAX_LEN;
> +    return end - field;
> +}
> +
>  AP_DECLARE(void) ap_get_mime_headers_core(request_rec *r, apr_bucket_brigade *bb)
>  {
>      char *last_field = NULL;
> @@ -755,6 +767,9 @@ AP_DECLARE(void) ap_get_mime_headers_cor
>                  ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
>                                "Request header exceeds LimitRequestFieldSize: "
>                                "%.*s", field_name_len(field), field);
> +                ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> +                              "Request header exceeds LimitRequestFieldSize: "
> +                              "%.*s", field_name_len(field), field);

Double logging?

>              }
>              return;
>          }
> @@ -786,6 +801,10 @@ AP_DECLARE(void) ap_get_mime_headers_cor
>                                    "Request header exceeds LimitRequestFieldSize "
>                                    "after folding: %.*s",
>                                    field_name_len(last_field), last_field);
> +                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> +                                  "Request header exceeds LimitRequestFieldSize "
> +                                  "after folding: %.*s",
> +                                  field_name_len(last_field), last_field);

Likewise?

>                      return;
>                  }
>
> @@ -811,6 +830,9 @@ AP_DECLARE(void) ap_get_mime_headers_cor
>                      apr_table_setn(r->notes, "error-notes",
>                                     "The number of request header fields "
>                                     "exceeds this server's limit.");
> +                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> +                                  "Number of request headers exceeds "
> +                                  "LimitRequestFields");
>                      return;
>                  }
>
> @@ -829,6 +851,10 @@ AP_DECLARE(void) ap_get_mime_headers_cor
>                                    "separator: %.*s", (int)LOG_NAME_MAX_LEN,
>                                    last_field);
>
> +                    ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
> +                                  "Request header field is missing ':' "
> +                                  "separator: %.*s", (int)LOG_NAME_MAX_LEN,
> +                                  last_field);

Likewise?

>                      return;
>                  }