From: Theodore Ts'o Date: Fri, 12 Aug 2022 03:45:21 +0000 (-0400) Subject: Avoid potential NULL dereference when argv[0] X-Git-Tag: v1.46.6-rc1~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7bb8da77e890d738900da75266786ea9a55df961;p=thirdparty%2Fe2fsprogs.git Avoid potential NULL dereference when argv[0] Addresses-Coverity-Bug: 1500772 Addresses-Coverity-Bug: 1500769 Addresses-Coverity-Bug: 1500767 Addresses-Coverity-Bug: 1500758 Addresses-Coverity-Bug: 1500756 Signed-off-by: Theodore Ts'o --- diff --git a/e2fsck/unix.c b/e2fsck/unix.c index 3708a4d80..4b6fd0999 100644 --- a/e2fsck/unix.c +++ b/e2fsck/unix.c @@ -74,11 +74,15 @@ int journal_enable_debug = -1; static void usage(e2fsck_t ctx) { + char *program_name = "e2fsck"; + + if (ctx && ctx->program_name) + program_name = ctx>program_name; fprintf(stderr, _("Usage: %s [-panyrcdfktvDFV] [-b superblock] [-B blocksize]\n" "\t\t[-l|-L bad_blocks_file] [-C fd] [-j external_journal]\n" "\t\t[-E extended-options] [-z undo_file] device\n"), - ctx->program_name); + program_name); fprintf(stderr, "%s", _("\nEmergency help:\n" " -p Automatic repair (no questions)\n" @@ -849,7 +853,7 @@ static errcode_t PRS(int argc, char *argv[], e2fsck_t *ret_ctx) if (argc && *argv) ctx->program_name = *argv; else - ctx->program_name = "e2fsck"; + usage(NULL); phys_mem_kb = get_memory_size() / 1024; ctx->readahead_kb = ~0ULL; diff --git a/misc/badblocks.c b/misc/badblocks.c index afeb3da9d..3dedf7630 100644 --- a/misc/badblocks.c +++ b/misc/badblocks.c @@ -1093,6 +1093,8 @@ int main (int argc, char ** argv) if (argc && *argv) program_name = *argv; + else + usage(); while ((c = getopt (argc, argv, "b:d:e:fi:o:svwnc:p:h:t:BX")) != EOF) { switch (c) { case 'b': diff --git a/misc/dumpe2fs.c b/misc/dumpe2fs.c index ef6d1cb82..7c080ed9f 100644 --- a/misc/dumpe2fs.c +++ b/misc/dumpe2fs.c @@ -619,7 +619,8 @@ int main (int argc, char ** argv) mmp_check = 1; header_only = 1; } - } + } else + usage(); if (!mmp_check) fprintf(stderr, "dumpe2fs %s (%s)\n", E2FSPROGS_VERSION, diff --git a/misc/e2image.c b/misc/e2image.c index 207c30374..f9357aa0c 100644 --- a/misc/e2image.c +++ b/misc/e2image.c @@ -1517,6 +1517,8 @@ int main (int argc, char ** argv) E2FSPROGS_DATE); if (argc && *argv) program_name = *argv; + else + usage(); add_error_table(&et_ext2_error_table); while ((c = getopt(argc, argv, "b:B:nrsIQafo:O:pc")) != EOF) switch (c) { diff --git a/misc/lsattr.c b/misc/lsattr.c index 55080e92a..72f4c6816 100644 --- a/misc/lsattr.c +++ b/misc/lsattr.c @@ -187,6 +187,8 @@ int main (int argc, char ** argv) #endif if (argc && *argv) program_name = *argv; + else + usage(); while ((c = getopt (argc, argv, "RVadlvp")) != EOF) switch (c) { diff --git a/misc/tune2fs.c b/misc/tune2fs.c index 7f023adfa..64a456af3 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -2951,6 +2951,8 @@ int tune2fs_main(int argc, char **argv) #endif if (argc && *argv) program_name = *argv; + else + usage(); add_error_table(&et_ext2_error_table); #ifdef CONFIG_BUILD_FINDFS diff --git a/resize/main.c b/resize/main.c index b745c58c2..94f5ec6d6 100644 --- a/resize/main.c +++ b/resize/main.c @@ -49,7 +49,7 @@ static void usage (char *prog) fprintf (stderr, _("Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] " "[-p] device [-b|-s|new_size] [-S RAID-stride] " "[-z undo_file]\n\n"), - prog); + prog ? prog : "resize2fs"); exit (1); } @@ -287,6 +287,8 @@ int main (int argc, char ** argv) E2FSPROGS_VERSION, E2FSPROGS_DATE); if (argc && *argv) program_name = *argv; + else + usage(NULL); while ((c = getopt(argc, argv, "d:fFhMPpS:bsz:")) != EOF) { switch (c) {