iReturn an error message for selectors containing two dots - 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 ce4493bfe5e03be7d7366962600933b1178ebbfd /scm/geomyidae/commit/ce4493bfe5e03be7d7366962600933b1178ebbfd.gph bitreich.org 70 1parent 023fde401dd25419b07b1be7675f5b8c27f2fa80 /scm/geomyidae/commit/023fde401dd25419b07b1be7675f5b8c27f2fa80.gph bitreich.org 70 hAuthor: Christian Kellermann URL:mailto:ckeen@pestilenz.org bitreich.org 70 iDate: Thu, 22 Mar 2018 13:08:39 +0100 Err bitreich.org 70 i Err bitreich.org 70 iReturn an error message for selectors containing two dots 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, 7 insertions(+), 1 deletion(-) 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@@ -62,6 +62,9 @@ char *htredir = "\n" Err bitreich.org 70 i " This page is for redirecting you to: %s.\n" Err bitreich.org 70 i " \n" Err bitreich.org 70 i "\n"; Err bitreich.org 70 i+char *selinval ="3Happy helping ☃ here: " Err bitreich.org 70 i+ "Sorry, your selector contains '..'. That's illegal here.\tErr" Err bitreich.org 70 i+ "\tlocalhost\t70\r\n.\r\n\r\n"; Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i dropprivileges(struct group *gr, struct passwd *pw) Err bitreich.org 70 i@@ -174,8 +177,11 @@ handlerequest(int sock, char *base, char *ohost, char *port, char *clienth, Err bitreich.org 70 i recvb[0] = '/'; Err bitreich.org 70 i recvb[1] = '\0'; Err bitreich.org 70 i } Err bitreich.org 70 i- if (recvb[0] != '/' || strstr(recvb, "..")) Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (recvb[0] != '/' || strstr(recvb, "..")){ Err bitreich.org 70 i+ dprintf(sock, selinval); Err bitreich.org 70 i return; Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i snprintf(path, sizeof(path), "%s%s", base, recvb); Err bitreich.org 70 i Err bitreich.org 70 .