From da6f7e9f05ae40446dab41cc45f44bbd7d4aa98a Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Mon, 26 Oct 2020 18:16:05 -0400 Subject: [PATCH] CGI: Fix SCRIPT_NAME variable --- src/serve.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/serve.c b/src/serve.c index cb8d634..4a8e778 100644 --- a/src/serve.c +++ b/src/serve.c @@ -121,7 +121,8 @@ internal_error: } static void -serve_cgi(struct gmnisrv_client *client, const char *path, const char *pathinfo) +serve_cgi(struct gmnisrv_client *client, const char *path, + const char *script_name, const char *pathinfo) { int pfd[2]; if (pipe(pfd) == -1) { @@ -170,7 +171,7 @@ serve_cgi(struct gmnisrv_client *client, const char *path, const char *pathinfo) setenv("SERVER_PROTOCOL", "GEMINI", 1); setenv("SERVER_SOFTWARE", "gmnisrv/0.0.0", 1); setenv("GEMINI_URL", client->buf, 1); - setenv("SCRIPT_NAME", path, 1); + setenv("SCRIPT_NAME", script_name, 1); setenv("PATH_INFO", pathinfo, 1); setenv("SERVER_NAME", client->host->hostname, 1); setenv("HOSTNAME", client->host->hostname, 1); @@ -330,7 +331,9 @@ serve_request(struct gmnisrv_client *client) } if (route->cgi) { - serve_cgi(client, real_path, (const char *)pathinfo); + serve_cgi(client, real_path, + (const char *)client_path, + (const char *)pathinfo); return; }