handledir: fix memory leak if writing a directory entry failed - 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 70d5d67d68410c852d9663a6e4935e508897ffdf
DIR parent 9526d3d35917770ca5a021d745bcf50d382875b2
HTML Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Wed, 8 Mar 2023 20:55:16 +0100
handledir: fix memory leak if writing a directory entry failed
Signed-off-by: Christoph Lohmann <20h@r-36.net>
Diffstat:
M handlr.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
---
DIR diff --git a/handlr.c b/handlr.c
@@ -67,10 +67,8 @@ handledir(int sock, char *path, char *port, char *base, char *args,
return;
} else {
for (i = 0; i < ndir && ret >= 0; i++) {
- if (dirent[i]->d_name[0] == '.') {
- free(dirent[i]);
+ if (dirent[i]->d_name[0] == '.')
continue;
- }
type = gettype(dirent[i]->d_name);
file = smprintf("%s%s%s", pa,
@@ -87,8 +85,9 @@ handledir(int sock, char *path, char *port, char *base, char *args,
humantime(&(st.st_mtime)),
e, ohost, port);
free(file);
- free(dirent[i]);
}
+ for (i = 0; i < ndir; i++)
+ free(dirent[i]);
free(dirent);
}
dprintf(sock, ".\r\n");