]> git.kaiwu.me - nginx.git/commitdiff
Zero padded the returned and logged HTTP status code, and fixed possible
authorRuslan Ermilov <ru@nginx.com>
Wed, 16 May 2012 13:27:04 +0000 (13:27 +0000)
committerRuslan Ermilov <ru@nginx.com>
Wed, 16 May 2012 13:27:04 +0000 (13:27 +0000)
buffer overrun in $status handling.

src/http/modules/ngx_http_log_module.c
src/http/ngx_http_header_filter_module.c

index 2d412853bd95bec9e11ea4146be96dd746ef2268..b3c9a1126939481b39ee1e7386d22428e9f9019b 100644 (file)
@@ -205,7 +205,7 @@ static ngx_http_log_var_t  ngx_http_log_vars[] = {
     { ngx_string("msec"), NGX_TIME_T_LEN + 4, ngx_http_log_msec },
     { ngx_string("request_time"), NGX_TIME_T_LEN + 4,
                           ngx_http_log_request_time },
-    { ngx_string("status"), 3, ngx_http_log_status },
+    { ngx_string("status"), NGX_INT_T_LEN, ngx_http_log_status },
     { ngx_string("bytes_sent"), NGX_OFF_T_LEN, ngx_http_log_bytes_sent },
     { ngx_string("body_bytes_sent"), NGX_OFF_T_LEN,
                           ngx_http_log_body_bytes_sent },
@@ -593,7 +593,7 @@ ngx_http_log_status(ngx_http_request_t *r, u_char *buf, ngx_http_log_op_t *op)
         status = 0;
     }
 
-    return ngx_sprintf(buf, "%ui", status);
+    return ngx_sprintf(buf, "%03ui", status);
 }
 
 
index 8a6080f6008b2e51e7535169089824f5c4c4b84a..19f531b5db1d30ef16e3cb75cc7a3705c3b76d05 100644 (file)
@@ -445,7 +445,7 @@ ngx_http_header_filter(ngx_http_request_t *r)
         b->last = ngx_copy(b->last, status_line->data, status_line->len);
 
     } else {
-        b->last = ngx_sprintf(b->last, "%ui", status);
+        b->last = ngx_sprintf(b->last, "%03ui", status);
     }
     *b->last++ = CR; *b->last++ = LF;