iIn the case the dir of the CGI is not accessible, don't run it. - geomyidae - A small C-based gopherd. Err bitreich.org 70 hgit clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ URL:git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ bitreich.org 70 1Log /scm/geomyidae/log.gph bitreich.org 70 1Files /scm/geomyidae/files.gph bitreich.org 70 1Refs /scm/geomyidae/refs.gph bitreich.org 70 1Tags /scm/geomyidae/tag bitreich.org 70 1README /scm/geomyidae/file/README.gph bitreich.org 70 1LICENSE /scm/geomyidae/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit d3b90fd7b38feae19f7e6192cd15051abfed45d7 /scm/geomyidae/commit/d3b90fd7b38feae19f7e6192cd15051abfed45d7.gph bitreich.org 70 1parent 267cfbdc5afa6145475f5017555f05142c3aaefb /scm/geomyidae/commit/267cfbdc5afa6145475f5017555f05142c3aaefb.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Sat, 24 Oct 2015 19:15:50 +0200 Err bitreich.org 70 i Err bitreich.org 70 iIn the case the dir of the CGI is not accessible, don't run it. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M handlr.c | 14 ++++++++++---- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 10 insertions(+), 4 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/handlr.c b/handlr.c /scm/geomyidae/file/handlr.c.gph bitreich.org 70 i@@ -161,8 +161,11 @@ handlecgi(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i dup2(sock, 2); Err bitreich.org 70 i switch(fork()) { Err bitreich.org 70 i case 0: Err bitreich.org 70 i- if (path != nil) Err bitreich.org 70 i- chdir(path); Err bitreich.org 70 i+ if (path != nil) { Err bitreich.org 70 i+ if (chdir(path) < 0) Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i execl(file, p, sear, args, ohost, port, (char *)nil); Err bitreich.org 70 i case -1: Err bitreich.org 70 i break; Err bitreich.org 70 i@@ -211,8 +214,11 @@ handledcgi(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i case 0: Err bitreich.org 70 i dup2(outpipe[1], 1); Err bitreich.org 70 i close(outpipe[0]); Err bitreich.org 70 i- if (path != nil) Err bitreich.org 70 i- chdir(path); Err bitreich.org 70 i+ if (path != nil) { Err bitreich.org 70 i+ if (chdir(path) < 0) Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i execl(file, p, sear, args, ohost, port, (char *)nil); Err bitreich.org 70 i case -1: Err bitreich.org 70 i break; Err bitreich.org 70 .