aboutsummaryrefslogtreecommitdiff
path: root/gmid.c
diff options
context:
space:
mode:
authorOmar Polo <op@omarpolo.com>2020-12-28 09:52:39 +0100
committerOmar Polo <op@omarpolo.com>2020-12-28 09:52:39 +0100
commit5a40216f37fc6b40a0861c685f9903f1a8bbb645 (patch)
tree5c07e0f3b22ff2ae0da01add9a598a19bd911fea /gmid.c
parent6d91731552a1be86794a0164b9c8313e0631725d (diff)
fix CGI with new IRI parser
With new IRI, parser the old assumption of path starting with ./ is no longer valid.
Diffstat (limited to 'gmid.c')
-rw-r--r--gmid.c9
1 files changed, 3 insertions, 6 deletions
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,