ifix a regression from 980a398da8acca65a13936ff0792c39f3dcb0ede - 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 9526d3d35917770ca5a021d745bcf50d382875b2 /scm/geomyidae/commit/9526d3d35917770ca5a021d745bcf50d382875b2.gph bitreich.org 70
1parent fc79d9a4d2cd906e09d9f046e9f1cc91e35b0f7e /scm/geomyidae/commit/fc79d9a4d2cd906e09d9f046e9f1cc91e35b0f7e.gph bitreich.org 70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org> URL:mailto:hiltjo@codemadness.org bitreich.org 70
iDate: Wed, 8 Mar 2023 20:54:44 +0100 Err bitreich.org 70
i Err bitreich.org 70
ifix a regression from 980a398da8acca65a13936ff0792c39f3dcb0ede Err bitreich.org 70
i Err bitreich.org 70
iOpen directory listings did not prefix the entries with / correctly when using Err bitreich.org 70
ia chroot. 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 handlr.c | 22 +++++++++++++++++----- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 17 insertions(+), 5 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@@ -21,6 +21,16 @@ Err bitreich.org 70
i #include "ind.h" Err bitreich.org 70
i #include "arg.h" Err bitreich.org 70
i Err bitreich.org 70
i+char * Err bitreich.org 70
i+make_base_path(char *path, char *base) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ if (!(base[0] == '/' && base[1] == '\0') && Err bitreich.org 70
i+ strlen(path) > strlen(base)) Err bitreich.org 70
i+ return path + strlen(base); Err bitreich.org 70
i+ else Err bitreich.org 70
i+ return path; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i void Err bitreich.org 70
i handledir(int sock, char *path, char *port, char *base, char *args, Err bitreich.org 70
i char *sear, char *ohost, char *chost, char *bhost, int istls) Err bitreich.org 70
i@@ -37,15 +47,16 @@ handledir(int sock, char *path, char *port, char *base, char *args, Err bitreich.org 70
i Err bitreich.org 70
i pa = xstrdup(path); Err bitreich.org 70
i e = pa + strlen(pa) - 1; Err bitreich.org 70
i- if (e[0] == '/') Err bitreich.org 70
i+ if (e > pa && e[0] == '/') Err bitreich.org 70
i *e = '\0'; Err bitreich.org 70
i Err bitreich.org 70
i par = xstrdup(pa); Err bitreich.org 70
i- b = strrchr(par + strlen(base), '/'); Err bitreich.org 70
i+ Err bitreich.org 70
i+ b = strrchr(make_base_path(par, base), '/'); Err bitreich.org 70
i if (b != NULL) { Err bitreich.org 70
i *b = '\0'; Err bitreich.org 70
i dprintf(sock, "1..\t%s\t%s\t%s\r\n", Err bitreich.org 70
i- par + strlen(base), ohost, port); Err bitreich.org 70
i+ make_base_path(par, base), ohost, port); Err bitreich.org 70
i } Err bitreich.org 70
i free(par); Err bitreich.org 70
i Err bitreich.org 70
i@@ -62,11 +73,12 @@ handledir(int sock, char *path, char *port, char *base, char *args, Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i type = gettype(dirent[i]->d_name); Err bitreich.org 70
i- file = smprintf("%s/%s", pa, Err bitreich.org 70
i+ file = smprintf("%s%s%s", pa, Err bitreich.org 70
i+ pa[0] == '/' && pa[1] == '\0' ? "" : "/", Err bitreich.org 70
i dirent[i]->d_name); Err bitreich.org 70
i if (stat(file, &st) >= 0 && S_ISDIR(st.st_mode)) Err bitreich.org 70
i type = gettype("index.gph"); Err bitreich.org 70
i- e = file + strlen(base); Err bitreich.org 70
i+ e = make_base_path(file, base); Err bitreich.org 70
i ret = dprintf(sock, Err bitreich.org 70
i "%c%-50.50s %10s %16s\t%s\t%s\t%s\r\n", Err bitreich.org 70
i *type->type, Err bitreich.org 70
.
Response:
text/plain