istrip / at the end of the base path - 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 2760fe803a9ea8574dd7fa57b17708f283b5dbe0 /scm/geomyidae/commit/2760fe803a9ea8574dd7fa57b17708f283b5dbe0.gph bitreich.org 70 1parent baf4df6c6481209962d0fa861dcbb6b9d69467a6 /scm/geomyidae/commit/baf4df6c6481209962d0fa861dcbb6b9d69467a6.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Thu, 13 Sep 2018 20:42:13 +0200 Err bitreich.org 70 i Err bitreich.org 70 istrip / at the end of the base path Err bitreich.org 70 i Err bitreich.org 70 ithis fixes relative path handling when using: Err bitreich.org 70 i Err bitreich.org 70 i geomyidae -b /var/gopher/ (added slash). Err bitreich.org 70 i Err bitreich.org 70 iSigned-off-by: Christoph Lohmann <20h@r-36.net> Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M main.c | 8 ++++++-- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 6 insertions(+), 2 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/geomyidae/file/main.c.gph bitreich.org 70 i@@ -44,7 +44,7 @@ int revlookup = 1; Err bitreich.org 70 i char *logfile = NULL; Err bitreich.org 70 i Err bitreich.org 70 i char *argv0; Err bitreich.org 70 i-char *stdbase = "/var/gopher"; Err bitreich.org 70 i+char stdbase[] = "/var/gopher"; Err bitreich.org 70 i char *stdport = "70"; Err bitreich.org 70 i char *indexf[] = {"/index.gph", "/index.cgi", "/index.dcgi", "/index.bin"}; Err bitreich.org 70 i char *nocgierr = "3Sorry, execution of the token '%s' was requested, but this " Err bitreich.org 70 i@@ -374,7 +374,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i socklen_t cltlen; Err bitreich.org 70 i int sock, dofork, inetf, usechroot, nocgi; Err bitreich.org 70 i char *port, *base, clienth[NI_MAXHOST], clientp[NI_MAXSERV]; Err bitreich.org 70 i- char *user, *group, *bindip, *ohost, *sport; Err bitreich.org 70 i+ char *user, *group, *bindip, *ohost, *sport, *p; Err bitreich.org 70 i struct passwd *us; Err bitreich.org 70 i struct group *gr; Err bitreich.org 70 i Err bitreich.org 70 i@@ -538,6 +538,10 @@ main(int argc, char *argv[]) Err bitreich.org 70 i return 1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+ /* strip / at the end, except if it is "/" */ Err bitreich.org 70 i+ for (p = base + strlen(base); p > base + 1 && p[-1] == '/'; --p) Err bitreich.org 70 i+ p[-1] = '\0'; Err bitreich.org 70 i+ Err bitreich.org 70 i if (dropprivileges(gr, us) < 0) { Err bitreich.org 70 i perror("dropprivileges"); Err bitreich.org 70 i close(listfd); Err bitreich.org 70 .