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.
Sergey Kandaurov
8 years ago
146 | 146 | |
147 | 147 | if (ngx_strncasecmp(ref, (u_char *) "http://", 7) == 0) { |
148 | 148 | ref += 7; |
149 | len -= 7; | |
149 | 150 | goto valid_scheme; |
150 | 151 | |
151 | 152 | } else if (ngx_strncasecmp(ref, (u_char *) "https://", 8) == 0) { |
152 | 153 | ref += 8; |
154 | len -= 8; | |
153 | 155 | goto valid_scheme; |
154 | 156 | } |
155 | 157 | } |
190 | 192 | ngx_int_t rc; |
191 | 193 | ngx_str_t referer; |
192 | 194 | |
193 | referer.len = len - 7; | |
195 | referer.len = len; | |
194 | 196 | referer.data = ref; |
195 | 197 | |
196 | 198 | rc = ngx_regex_exec_array(rlcf->regex, &referer, r->connection->log); |