From 5a40216f37fc6b40a0861c685f9903f1a8bbb645 Mon Sep 17 00:00:00 2001 From: Omar Polo Date: Mon, 28 Dec 2020 09:52:39 +0100 Subject: fix CGI with new IRI parser With new IRI, parser the old assumption of path starting with ./ is no longer valid. --- gmid.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'gmid.c') diff --git a/gmid.c b/gmid.c index fb98cfc..e4ed9f7 100644 --- a/gmid.c +++ b/gmid.c @@ -218,8 +218,7 @@ open_file(char *fpath, char *query, struct pollfd *fds, struct client *c) { switch (check_path(c, fpath, &c->fd)) { case FILE_EXECUTABLE: - /* +2 to skip the ./ */ - if (cgi != NULL && starts_with(fpath+2, cgi)) + if (cgi != NULL && starts_with(fpath, cgi)) return start_cgi(fpath, "", query, fds, c); /* fallthrough */ @@ -248,7 +247,7 @@ open_file(char *fpath, char *query, struct pollfd *fds, struct client *c) return 0; case FILE_MISSING: - if (cgi != NULL && starts_with(fpath+2, cgi)) + if (cgi != NULL && starts_with(fpath, cgi)) return check_for_cgi(fpath, query, fds, c); if (!start_reply(fds, c, NOT_FOUND, "not found")) @@ -281,8 +280,6 @@ start_cgi(const char *spath, const char *relpath, const char *query, char addr[INET_ADDRSTRLEN]; char *argv[] = { NULL, NULL, NULL }; - spath++; - close(p[0]); if (dup2(p[1], 1) == -1) goto childerr; @@ -293,7 +290,7 @@ start_cgi(const char *spath, const char *relpath, const char *query, if (asprintf(&portno, "%d", port) == -1) goto childerr; - if (asprintf(&ex, "%s%s", dir, spath+1) == -1) + if (asprintf(&ex, "%s/%s", dir, spath) == -1) goto childerr; if (asprintf(&requri, "%s%s%s", spath, -- cgit v1.2.3