Hi,

In the rerferer module, the length of scheme in regular referer
expression is treated as 'http://'. It's incorrect for the https
request. And the regular referer rule will be invalid. This patch
could fix this bug.

2013/8/12 Liangbin Li <lilb.ed...@gmail.com>:
> --- ngx_http_referer_module.c
> +++ ngx_http_referer_module.c
> @@ -147,10 +147,12 @@
>
>          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 @@
>          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);
>
> _______________________________________________
> nginx mailing list
> nginx@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx



-- 
Weibin Yao
Developer @ Server Platform Team of Taobao

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to