commit 21115d4a1befb0b9fd139aaa47a2f22efb0f6ba4
Author:     Quentin Rameau <[email protected]>
AuthorDate: Thu Jul 13 19:05:21 2017 +0200
Commit:     Laslo Hunhold <[email protected]>
CommitDate: Thu Jul 13 21:11:06 2017 +0200

    Fix logic error in vhost chrooting (from e592bbc)
    
    Thanks Hiltjo for having spotted it!

diff --git a/quark.c b/quark.c
index 755b94d..14044ae 100644
--- a/quark.c
+++ b/quark.c
@@ -568,9 +568,12 @@ sendresponse(int fd, struct request *r)
                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) && chdir(vhost[i].dir) < 0) {
-                               return sendstatus(fd, (errno == EACCES) ?
-                                                 S_FORBIDDEN : S_NOT_FOUND);
+                           NULL, 0) {
+                               if (chdir(vhost[i].dir) < 0) {
+                                       return sendstatus(fd, (errno == EACCES)
+                                              ? S_FORBIDDEN : S_NOT_FOUND);
+                               }
+                               break;
                        }
                }
        }

Reply via email to