From d7f5c6029e4dab604bd8fc82f747544ac4e4dc67 Mon Sep 17 00:00:00 2001 From: Laslo Hunhold Date: Tue, 11 Jul 2017 15:02:24 +0200 Subject: [PATCH] Fix the style a bit and prevent out-of-bounds index access for vhost[] --- quark.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/quark.c b/quark.c index 5b597e0..755b94d 100644 --- a/quark.c +++ b/quark.c @@ -566,10 +566,9 @@ sendresponse(int fd, struct request *r) /* match vhost */ if (vhosts) { for (i = 0; i < LEN(vhost); i++) { + /* switch to vhost directory if there is a match */ if (!regexec(&vhost[i].re, r->field[REQ_HOST], 0, - NULL, 0) && - /* switch to vhost directory */ - chdir(vhost[i].dir) < 0) { + NULL, 0) && chdir(vhost[i].dir) < 0) { return sendstatus(fd, (errno == EACCES) ? S_FORBIDDEN : S_NOT_FOUND); } @@ -606,7 +605,7 @@ sendresponse(int fd, struct request *r) /* redirect if targets differ or host is non-canonical */ if (strcmp(r->target, realtarget) || (vhosts && r->field[REQ_HOST][0] && - strcmp(r->field[REQ_HOST], vhost[i].name))) { + i < LEN(vhost) && strcmp(r->field[REQ_HOST], vhost[i].name))) { /* do we need to add a port to the Location? */ hasport = strcmp(port, "80");