From c89b0c1ff3717adba6925f68cd8f266ee04df3cf Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Mon, 16 Jan 2023 15:56:02 +1100 Subject: [PATCH] Fix a few issues in leaDBSearchForTech() Always call closedir() after a successful opendir(), and always return a value from function. --- database/DBio.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/database/DBio.c b/database/DBio.c index 31dbd123..4a85bb16 100644 --- a/database/DBio.c +++ b/database/DBio.c @@ -194,7 +194,10 @@ DBSearchForTech(techname, pathroot, level) if (tdent->d_type != DT_DIR) { if (!strcmp(tdent->d_name, techname)) + { + closedir(tdir); return pathroot; + } } else if (strcmp(tdent->d_name, ".") && strcmp(tdent->d_name, "..")) { @@ -202,13 +205,17 @@ DBSearchForTech(techname, pathroot, level) sprintf(newpath, "%s/%s", pathroot, tdent->d_name); found = DBSearchForTech(techname, newpath, level + 1); if (found != newpath) freeMagic(newpath); - if (found) return found; + if (found) + { + closedir(tdir); + return found; + } } } closedir(tdir); } - else - return NULL; + + return NULL; } /*