wslua: fix memleak in Dir.remove_all on error path

While at it, use g_build_filename. Found by Clang Static Analyzer.

Change-Id: I5c50f50abb8c16a553586c548ccd1ae6c3cdd8c1
Reviewed-on: https://code.wireshark.org/review/27439
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Peter Wu 2018-05-09 23:10:27 +02:00 committed by Anders Broman
parent d834299472
commit a729c0f173
1 changed files with 2 additions and 3 deletions

View File

@ -118,18 +118,17 @@ static int delete_directory(const char *directory) {
/* delete all contents of directory */
if ((dir = ws_dir_open(directory, 0, NULL)) != NULL) {
while ((file = ws_dir_read_name(dir)) != NULL) {
filename = g_strdup_printf ("%s%s%s", directory, G_DIR_SEPARATOR_S,
ws_dir_get_name(file));
filename = g_build_filename(directory, ws_dir_get_name(file), NULL);
if (test_for_directory(filename) != EISDIR) {
ret = ws_remove(filename);
} else {
/* recurse */
ret = delete_directory (filename);
}
g_free(filename);
if (ret != 0) {
break;
}
g_free (filename);
}
ws_dir_close(dir);
}