Commit ddbe6906 authored by Sergey Lyubka's avatar Sergey Lyubka

CGI directory logic fixed

parent 9ba1596c
...@@ -1131,16 +1131,17 @@ static const char cgi_status[] = "HTTP/1.1 200 OK\r\n"; ...@@ -1131,16 +1131,17 @@ static const char cgi_status[] = "HTTP/1.1 200 OK\r\n";
static void open_cgi_endpoint(struct connection *conn, const char *prog) { static void open_cgi_endpoint(struct connection *conn, const char *prog) {
struct cgi_env_block blk; struct cgi_env_block blk;
char dir[MAX_PATH_SIZE]; char dir[MAX_PATH_SIZE], *p;
sock_t fds[2]; sock_t fds[2];
prepare_cgi_environment(conn, prog, &blk); prepare_cgi_environment(conn, prog, &blk);
// CGI must be executed in its own directory. 'dir' must point to the // CGI must be executed in its own directory. 'dir' must point to the
// directory containing executable program, 'p' must point to the // directory containing executable program, 'p' must point to the
// executable program name relative to 'dir'. // executable program name relative to 'dir'.
mg_snprintf(dir, sizeof(dir), "%s", prog); if ((p = strrchr(prog, '/')) == NULL) {
if (strrchr(dir, '/') == NULL) {
mg_snprintf(dir, sizeof(dir), "%s", "."); mg_snprintf(dir, sizeof(dir), "%s", ".");
} else {
mg_snprintf(dir, sizeof(dir), "%.*s", p - prog, prog);
} }
// Try to create socketpair in a loop until success. mg_socketpair() // Try to create socketpair in a loop until success. mg_socketpair()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment