SMOLNET PORTAL home about changes
ifix realpath when base is a symlink - 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 77f7f5ed8370cf11b8992c70e7f5361625b9afa9	/scm/geomyidae/commit/77f7f5ed8370cf11b8992c70e7f5361625b9afa9.gph	bitreich.org	70
1parent d0a78b16bdbd4330424b9abdcf6448c5a2b42253	/scm/geomyidae/commit/d0a78b16bdbd4330424b9abdcf6448c5a2b42253.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Sat,  3 Dec 2022 14:18:29 +0000	Err	bitreich.org	70
i	Err	bitreich.org	70
ifix realpath when base is a symlink	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 ind.c                               |       9 ++++++---	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 6 insertions(+), 3 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/ind.c b/ind.c	/scm/geomyidae/file/ind.c.gph	bitreich.org	70
i@@ -415,7 +415,7 @@ scanfile(char *fname)	Err	bitreich.org	70
i int	Err	bitreich.org	70
i printelem(int fd, Elems *el, char *file, char *base, char *addr, char *port)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        char *path, *p, *argbase, buf[PATH_MAX+1], *argp;	Err	bitreich.org	70
i+        char *path, *p, *argbase, buf[PATH_MAX+1], *argp, *realbase;	Err	bitreich.org	70
i         int len, blen;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (!strcmp(el->e[3], "server")) {	Err	bitreich.org	70
i@@ -461,9 +461,11 @@ printelem(int fd, Elems *el, char *file, char *base, char *addr, char *port)	Err	bitreich.org	70
i                 snprintf(buf, sizeof(buf), "%s%.*s/%.*s", base, len,	Err	bitreich.org	70
i                         path, blen, el->e[2]);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+                	Err	bitreich.org	70
i                 if ((path = realpath(buf, NULL)) &&	Err	bitreich.org	70
i-                                !strncmp(base, path, strlen(base))) {	Err	bitreich.org	70
i-                        p = path + strlen(base);	Err	bitreich.org	70
i+                                (realbase = realpath(base, NULL)) &&	Err	bitreich.org	70
i+                                !strncmp(realbase, path, strlen(realbase))) {	Err	bitreich.org	70
i+                        p = path + strlen(realbase);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                         /*	Err	bitreich.org	70
i                          * Do not forget to readd arguments which were	Err	bitreich.org	70
i@@ -476,6 +478,7 @@ printelem(int fd, Elems *el, char *file, char *base, char *addr, char *port)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                         free(el->e[2]);	Err	bitreich.org	70
i                         el->e[2] = argp;	Err	bitreich.org	70
i+                        free(realbase);	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 free(path);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/geomyidae/commit/77f7f5ed8370...
Content-Typetext/plain; charset=utf-8