summaryrefslogtreecommitdiffstats
path: root/usr.sbin/nginx/src/core/ngx_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/nginx/src/core/ngx_string.c')
-rw-r--r--usr.sbin/nginx/src/core/ngx_string.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/usr.sbin/nginx/src/core/ngx_string.c b/usr.sbin/nginx/src/core/ngx_string.c
index a42ee861f03..1d1989da24d 100644
--- a/usr.sbin/nginx/src/core/ngx_string.c
+++ b/usr.sbin/nginx/src/core/ngx_string.c
@@ -1842,10 +1842,22 @@ ngx_memcpy(void *dst, const void *src, size_t n)
void
ngx_strip_chroot(ngx_str_t *path)
{
- if (!ngx_strncmp(path->data, NGX_PREFIX, strlen(NGX_PREFIX))) {
+ int plen;
+ u_char *prefix;
+
+ if (ngx_prefix)
+ prefix = ngx_prefix;
+ else
+ prefix = NGX_PREFIX;
+
+ if (prefix[strlen(prefix) - 1] == '/')
+ plen = strlen(prefix) - 1;
+ else
+ plen = strlen(prefix);
+
+ if (!ngx_strncmp(path->data, prefix, strlen(prefix))) {
char *x, *buf = malloc(path->len);
- x = ngx_cpystrn(buf, path->data + strlen(NGX_PREFIX) - 1,
- path->len);
+ x = ngx_cpystrn(buf, path->data + plen, path->len);
path->len = (x - buf);
path->data = buf;
}