From 7bd6d63b0c0cf2a0c4b609014c49e66d5199e385 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 21 Jul 2026 13:32:05 +0300 Subject: [PATCH] xz: Free the filename allocated for --files or --files0 This cleans up leak detection slightly. Otherwise it doesn't matter because xz is going to exit soon anyway. Reported-by: Phuc An Fixes: https://github.com/tukaani-project/xz/pull/232 --- src/xz/args.c | 2 +- src/xz/args.h | 2 +- src/xz/main.c | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/xz/args.c b/src/xz/args.c index 8a9f98dc..cf64380b 100644 --- a/src/xz/args.c +++ b/src/xz/args.c @@ -638,7 +638,7 @@ parse_real(args_info *args, int argc, char **argv) "or '--files0'.")); if (optarg == NULL) { - args->files_name = stdin_filename; + args->files_name = (char *)stdin_filename; args->files_file = stdin; } else { // If we are called from parse_environment(), diff --git a/src/xz/args.h b/src/xz/args.h index 7fdf37f1..19c12616 100644 --- a/src/xz/args.h +++ b/src/xz/args.h @@ -19,7 +19,7 @@ typedef struct { /// Name of the file from which to read filenames. This is NULL /// if --files or --files0 was not used. - const char *files_name; + char *files_name; /// File opened for reading from which filenames are read. This is /// non-NULL only if files_name is non-NULL. diff --git a/src/xz/main.c b/src/xz/main.c index 8cc3b740..5dabc5ae 100644 --- a/src/xz/main.c +++ b/src/xz/main.c @@ -335,8 +335,10 @@ main(int argc, char **argv) run(name); } - if (args.files_name != stdin_filename) + if (args.files_name != stdin_filename) { (void)fclose(args.files_file); + free(args.files_name); + } } #ifdef HAVE_DECODERS