]> git.kaiwu.me - nginx.git/commitdiff
Skipping spaces in configuration files (ticket #1557).
authorMaxim Dounin <mdounin@mdounin.ru>
Thu, 9 Aug 2018 09:15:42 +0000 (12:15 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Thu, 9 Aug 2018 09:15:42 +0000 (12:15 +0300)
Previously, a chunk of spaces larger than NGX_CONF_BUFFER (4096 bytes)
resulted in the "too long parameter" error during parsing such a
configuration.  This was because the code only set start and start_line
on non-whitespace characters, and hence adjacent whitespace characters
were preserved when reading additional data from the configuration file.
Fix is to always move start and start_line if the last character was
a space.

src/core/ngx_conf_file.c

index ba454dea82ac1d1df7faa91dc49eea81cd05520f..e92cd33c91b5f0545d0e08ade4299a5fb3456c00 100644 (file)
@@ -656,13 +656,14 @@ ngx_conf_read_token(ngx_conf_t *cf)
         }
 
         if (last_space) {
-            if (ch == ' ' || ch == '\t' || ch == CR || ch == LF) {
-                continue;
-            }
 
             start = b->pos - 1;
             start_line = cf->conf_file->line;
 
+            if (ch == ' ' || ch == '\t' || ch == CR || ch == LF) {
+                continue;
+            }
+
             switch (ch) {
 
             case ';':