From bac8c1f95369efe4802bd9b41a7deba9468d1dd4 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Wed, 7 Jan 2009 12:01:20 +0100 Subject: [PATCH] Absolutify SCRIPT_FILENAME in callcgi. --- src/callcgi.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/callcgi.c b/src/callcgi.c index dcd6819..70a97dd 100644 --- a/src/callcgi.c +++ b/src/callcgi.c @@ -52,6 +52,17 @@ static void passdata(FILE *in, FILE *out) free(buf); } +static char *absolutify(char *file) +{ + char cwd[1024]; + + if(*file != '/') { + getcwd(cwd, sizeof(cwd)); + return(sprintf2("%s/%s", cwd, file)); + } + return(sstrdup(file)); +} + static void forkchild(int inpath, char *prog, char *file, char *method, char *url, char *rest, int *infd, int *outfd) { int i; @@ -103,7 +114,7 @@ static void forkchild(int inpath, char *prog, char *file, char *method, char *ur * This is (understandably) missing from the CGI * specification, but PHP seems to require it. */ - putenv(sprintf2("SCRIPT_FILENAME=%s", file)); + putenv(sprintf2("SCRIPT_FILENAME=%s", absolutify(file))); if(inpath) execlp(prog, prog, file, NULL); else -- 2.11.0