From f153ef257a8e8901d8f8ed96fd1a2467806e8755 Mon Sep 17 00:00:00 2001 From: Naveed Khan Date: Mon, 22 Jun 2026 02:39:41 +0530 Subject: bzip2recover: Check argc >= 1 && argv[0] != NULL main() initialises progName by copying argv[0] with strncpy before argc is examined. When the program is started with an empty argument vector (argc == 0 and argv[0] == NULL), for example through execve(path, (char*[]){ NULL }, envp), this dereferences a NULL pointer and bzip2recover crashes with SIGSEGV before any argument checking happens. Guard the use of argv[0] and fall back to a hard coded "bzip2recover" string, mirroring the fix already applied to bzip2.c in commit af79253677ad ("bzip2.c: Check argc >= 1 && argv[0] != NULL"). --- bzip2recover.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bzip2recover.c b/bzip2recover.c index 28d4a05..8c79a90 100644 --- a/bzip2recover.c +++ b/bzip2recover.c @@ -311,7 +311,10 @@ Int32 main ( Int32 argc, Char** argv ) UInt32 buffHi, buffLo, blockCRC; Char* p; - strncpy ( progName, argv[0], BZ_MAX_FILENAME-1); + if (argc >= 1 && argv[0] != NULL) + strncpy ( progName, argv[0], BZ_MAX_FILENAME-1); + else + strncpy ( progName, "bzip2recover", BZ_MAX_FILENAME-1); progName[BZ_MAX_FILENAME-1]='\0'; inFileName[0] = outFileName[0] = 0; -- cgit v1.2.3-55-g6feb