Change directory before executing scripts
This commit is contained in:
parent
2912f13047
commit
600ff69805
14
fcgi-cgi.c
14
fcgi-cgi.c
@ -9,6 +9,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <string.h>
|
||||||
#include <stropts.h>
|
#include <stropts.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
@ -337,6 +338,17 @@ static void fcgi_cgi_child_start(fcgi_cgi_child *cld, const gchar *path) {
|
|||||||
move2fd(pipes_from[1], 1);
|
move2fd(pipes_from[1], 1);
|
||||||
move2fd(pipes_err[1], 2);
|
move2fd(pipes_err[1], 2);
|
||||||
|
|
||||||
|
/* try changing the directory. don't care about memleaks, execve() coming soon :) */
|
||||||
|
{
|
||||||
|
char *dir = strdup(path), *sep;
|
||||||
|
if (NULL == (sep = strrchr(path, '/'))) {
|
||||||
|
chdir("/");
|
||||||
|
} else {
|
||||||
|
*sep = '\0';
|
||||||
|
chdir(dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
g_ptr_array_add(enva, NULL);
|
g_ptr_array_add(enva, NULL);
|
||||||
newenv = (char**) g_ptr_array_free(enva, FALSE);
|
newenv = (char**) g_ptr_array_free(enva, FALSE);
|
||||||
execve(path, args, newenv);
|
execve(path, args, newenv);
|
||||||
@ -526,6 +538,8 @@ static void sigint_cb(struct ev_loop *loop, struct ev_signal *w, int revents) {
|
|||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
struct ev_loop *loop;
|
struct ev_loop *loop;
|
||||||
fcgi_cgi_server* srv;
|
fcgi_cgi_server* srv;
|
||||||
|
UNUSED(argc);
|
||||||
|
UNUSED(argv);
|
||||||
|
|
||||||
loop = ev_default_loop(0);
|
loop = ev_default_loop(0);
|
||||||
srv = fcgi_cgi_server_create(loop, 0);
|
srv = fcgi_cgi_server_create(loop, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user