From: Eric Andersen Date: Wed, 20 Dec 2000 23:19:42 +0000 (-0000) Subject: Turns out, md5sum was broken anyways. It uses backwards TRUE/FALSE X-Git-Tag: 0_49~107 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e111d69ca27a39d0a1eaf02617912092bc929c30;p=oweals%2Fbusybox.git Turns out, md5sum was broken anyways. It uses backwards TRUE/FALSE and wasnever updated when TRUE and FALSE were fixed. So kludge it by doing an #undef TRUE, then define it backwards... --- diff --git a/coreutils/md5sum.c b/coreutils/md5sum.c index 2c08b29c5..3458f2e05 100644 --- a/coreutils/md5sum.c +++ b/coreutils/md5sum.c @@ -26,6 +26,12 @@ #include #include +/* For some silly reason, this file uses backwards TRUE and FALSE conventions */ +#undef TRUE +#undef FALSE +#define FALSE ((int) 1) +#define TRUE ((int) 0) + //---------------------------------------------------------------------------- //--------md5.c //---------------------------------------------------------------------------- @@ -699,7 +705,7 @@ static int md5_check(const char *checkfile_name) fgets(line, BUFSIZ-1, checkfile_stream); line_length = strlen(line); - if (line_length <= 0) + if (line_length <= 0 || line==NULL) break; /* Ignore comment lines, which begin with a '#' character. */ @@ -757,9 +763,6 @@ static int md5_check(const char *checkfile_name) while (!feof(checkfile_stream) && !ferror(checkfile_stream)); - if (line) - free(line); - if (ferror(checkfile_stream)) { error_msg("%s: read error\n", checkfile_name); /* */ return FALSE; @@ -852,31 +855,26 @@ int md5sum_main(int argc, } if (file_type_specified && do_check) { - error_msg("the -b and -t options are meaningless when verifying checksums\n"); - return EXIT_FAILURE; + error_msg_and_die("the -b and -t options are meaningless when verifying checksums\n"); } if (n_strings > 0 && do_check) { - error_msg("the -g and -c options are mutually exclusive\n"); - return EXIT_FAILURE; + error_msg_and_die("the -g and -c options are mutually exclusive\n"); } if (status_only && !do_check) { - error_msg("the -s option is meaningful only when verifying checksums\n"); - return EXIT_FAILURE; + error_msg_and_die("the -s option is meaningful only when verifying checksums\n"); } if (warn && !do_check) { - error_msg("the -w option is meaningful only when verifying checksums\n"); - return EXIT_FAILURE; + error_msg_and_die("the -w option is meaningful only when verifying checksums\n"); } if (n_strings > 0) { size_t i; if (optind < argc) { - error_msg("no files may be specified when using -g\n"); - return EXIT_FAILURE; + error_msg_and_die("no files may be specified when using -g\n"); } for (i = 0; i < n_strings; ++i) { size_t cnt; @@ -942,13 +940,11 @@ int md5sum_main(int argc, } if (fclose (stdout) == EOF) { - error_msg("write error\n"); - return EXIT_FAILURE; + error_msg_and_die("write error\n"); } if (have_read_stdin && fclose (stdin) == EOF) { - error_msg("standard input\n"); - return EXIT_FAILURE; + error_msg_and_die("standard input\n"); } if (err == 0) diff --git a/md5sum.c b/md5sum.c index 2c08b29c5..3458f2e05 100644 --- a/md5sum.c +++ b/md5sum.c @@ -26,6 +26,12 @@ #include #include +/* For some silly reason, this file uses backwards TRUE and FALSE conventions */ +#undef TRUE +#undef FALSE +#define FALSE ((int) 1) +#define TRUE ((int) 0) + //---------------------------------------------------------------------------- //--------md5.c //---------------------------------------------------------------------------- @@ -699,7 +705,7 @@ static int md5_check(const char *checkfile_name) fgets(line, BUFSIZ-1, checkfile_stream); line_length = strlen(line); - if (line_length <= 0) + if (line_length <= 0 || line==NULL) break; /* Ignore comment lines, which begin with a '#' character. */ @@ -757,9 +763,6 @@ static int md5_check(const char *checkfile_name) while (!feof(checkfile_stream) && !ferror(checkfile_stream)); - if (line) - free(line); - if (ferror(checkfile_stream)) { error_msg("%s: read error\n", checkfile_name); /* */ return FALSE; @@ -852,31 +855,26 @@ int md5sum_main(int argc, } if (file_type_specified && do_check) { - error_msg("the -b and -t options are meaningless when verifying checksums\n"); - return EXIT_FAILURE; + error_msg_and_die("the -b and -t options are meaningless when verifying checksums\n"); } if (n_strings > 0 && do_check) { - error_msg("the -g and -c options are mutually exclusive\n"); - return EXIT_FAILURE; + error_msg_and_die("the -g and -c options are mutually exclusive\n"); } if (status_only && !do_check) { - error_msg("the -s option is meaningful only when verifying checksums\n"); - return EXIT_FAILURE; + error_msg_and_die("the -s option is meaningful only when verifying checksums\n"); } if (warn && !do_check) { - error_msg("the -w option is meaningful only when verifying checksums\n"); - return EXIT_FAILURE; + error_msg_and_die("the -w option is meaningful only when verifying checksums\n"); } if (n_strings > 0) { size_t i; if (optind < argc) { - error_msg("no files may be specified when using -g\n"); - return EXIT_FAILURE; + error_msg_and_die("no files may be specified when using -g\n"); } for (i = 0; i < n_strings; ++i) { size_t cnt; @@ -942,13 +940,11 @@ int md5sum_main(int argc, } if (fclose (stdout) == EOF) { - error_msg("write error\n"); - return EXIT_FAILURE; + error_msg_and_die("write error\n"); } if (have_read_stdin && fclose (stdin) == EOF) { - error_msg("standard input\n"); - return EXIT_FAILURE; + error_msg_and_die("standard input\n"); } if (err == 0)