Give virtual path instead of real path. - geomyidae - A small C-based gopherd. HTML git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit cdf260787abd32506e151744c411d0e1057757d8 DIR parent 32c1854864ce91a873e607659294eda9012411e6 HTML Author: Christoph Lohmann <20h@r-36.net> Date: Wed, 23 Aug 2023 13:04:52 +0200 Give virtual path instead of real path. * Fix issue with symlinks to a completely different path. Diffstat: M main.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- DIR diff --git a/main.c b/main.c @@ -331,6 +331,7 @@ dothegopher: logentry(clienth, clientp, recvc, "not found"); return; } + if (stat(rpath, &dir) != -1) { /* * If sticky bit is set, only serve if this is encrypted. @@ -359,7 +360,7 @@ dothegopher: } /* * The size check for strcat to work is - * above. + * calculated above this comment. * * Until strlcat isn't properly in all * linux libcs, we keep to this. OpenBSD @@ -422,7 +423,7 @@ dothegopher: if (loglvl & FILES) logentry(clienth, clientp, recvc, "serving"); - type->f(sock, rpath, port, base, args, sear, ohost, + type->f(sock, path, port, base, args, sear, ohost, clienth, serverh, istls, recvc, traverse); } } else { @@ -436,7 +437,7 @@ dothegopher: } if (!pathfallthrough && S_ISDIR(dir.st_mode)) { - handledir(sock, rpath, port, base, args, sear, ohost, + handledir(sock, path, port, base, args, sear, ohost, clienth, serverh, istls, recvc, traverse); if (loglvl & DIRS) { logentry(clienth, clientp, recvc,