aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2013-08-13 17:47:04 +0400
committerSergey Kandaurov <pluknet@nginx.com>2013-08-13 17:47:04 +0400
commit9aaf256e4024e278e099c94281246aada63fc2fa (patch)
tree98ef6b0d0bf5a054b1ed01b14ccf322d63d51301 /src
parent65e37b4a128e5c4fe88721c790fd6f5c13102a62 (diff)
downloadnginx-9aaf256e4024e278e099c94281246aada63fc2fa.tar.gz
nginx-9aaf256e4024e278e099c94281246aada63fc2fa.zip
Referer module: fixed regex matching against HTTPS referers.
When matching a compiled regex against value in the "Referer" header field, the length was calculated incorrectly for strings that start from "https://". This might cause matching to fail for regexes with end-of-line anchors. Patch by Liangbin Li.
Diffstat (limited to 'src')
-rw-r--r--src/http/modules/ngx_http_referer_module.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/http/modules/ngx_http_referer_module.c b/src/http/modules/ngx_http_referer_module.c
index d18b8b9d8..85b75ab3d 100644
--- a/src/http/modules/ngx_http_referer_module.c
+++ b/src/http/modules/ngx_http_referer_module.c
@@ -147,10 +147,12 @@ ngx_http_referer_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v,
if (ngx_strncasecmp(ref, (u_char *) "http://", 7) == 0) {
ref += 7;
+ len -= 7;
goto valid_scheme;
} else if (ngx_strncasecmp(ref, (u_char *) "https://", 8) == 0) {
ref += 8;
+ len -= 8;
goto valid_scheme;
}
}
@@ -191,7 +193,7 @@ valid_scheme:
ngx_int_t rc;
ngx_str_t referer;
- referer.len = len - 7;
+ referer.len = len;
referer.data = ref;
rc = ngx_regex_exec_array(rlcf->regex, &referer, r->connection->log);