From e971af2326297803013cedda8bd95a80d47a6dbd Mon Sep 17 00:00:00 2001 From: TapTap Date: Tue, 21 Jul 2026 18:16:37 +0200 Subject: [PATCH] fix: scanner cur_path leak when directory enqueued (ASan) --- src/client/scanner.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/client/scanner.c b/src/client/scanner.c index 7828e4e..76fbd78 100644 --- a/src/client/scanner.c +++ b/src/client/scanner.c @@ -138,10 +138,12 @@ Chunk* directory_scanner_next(DirectoryScanner* scanner) { if (S_ISDIR(stats.st_mode)) { int next_depth = scanner->current_depth + 1; - if (scanner->max_depth <= 0 || next_depth < scanner->max_depth) - queue_enqueue(scanner->directories, dir_entry_create(cur_path, next_depth)); - else - free(cur_path); + if (scanner->max_depth <= 0 || next_depth < scanner->max_depth) { + DirEntry* de = dir_entry_create(cur_path, next_depth); + if (!queue_enqueue(scanner->directories, de)) + dir_entry_destroy(de); + } + free(cur_path); } else { if (scanner->max_depth > 0 && scanner->current_depth + 1 > scanner->max_depth) { free(cur_path);