Whamcloud - gitweb
Avoid potential NULL dereference when argv[0]
authorTheodore Ts'o <tytso@mit.edu>
Fri, 12 Aug 2022 03:45:21 +0000 (23:45 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 12 Aug 2022 03:49:14 +0000 (23:49 -0400)
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 <tytso@mit.edu>
e2fsck/unix.c
misc/badblocks.c
misc/dumpe2fs.c
misc/e2image.c
misc/lsattr.c
misc/tune2fs.c
resize/main.c

index 3708a4d..4b6fd09 100644 (file)
@@ -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;
index afeb3da..3dedf76 100644 (file)
@@ -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':
index ef6d1cb..7c080ed 100644 (file)
@@ -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,
index 207c303..f9357aa 100644 (file)
@@ -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) {
index 55080e9..72f4c68 100644 (file)
@@ -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)
                {
index 7f023ad..64a456a 100644 (file)
@@ -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
index b745c58..94f5ec6 100644 (file)
@@ -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) {