{md5,shaN}sum: make -c EMPTY fail
function old new delta md5_sha1_sum_main 466 485 +19 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
f6348e50ef
commit
b0056ea86d
@ -66,6 +66,10 @@
|
|||||||
//usage: "\n -w Warn about improperly formatted checksum lines"
|
//usage: "\n -w Warn about improperly formatted checksum lines"
|
||||||
//usage: )
|
//usage: )
|
||||||
|
|
||||||
|
//FIXME: GNU coreutils 8.25 has no -s option, it has only these two long opts:
|
||||||
|
// --quiet don't print OK for each successfully verified file
|
||||||
|
// --status don't output anything, status code shows success
|
||||||
|
|
||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
|
|
||||||
/* This is a NOEXEC applet. Be very careful! */
|
/* This is a NOEXEC applet. Be very careful! */
|
||||||
@ -174,6 +178,8 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
unsigned flags;
|
unsigned flags;
|
||||||
|
|
||||||
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK) {
|
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK) {
|
||||||
|
/* -s and -w require -c */
|
||||||
|
opt_complementary = "s?c:w?c";
|
||||||
/* -b "binary", -t "text" are ignored (shaNNNsum compat) */
|
/* -b "binary", -t "text" are ignored (shaNNNsum compat) */
|
||||||
flags = getopt32(argv, "scwbt");
|
flags = getopt32(argv, "scwbt");
|
||||||
argv += optind;
|
argv += optind;
|
||||||
@ -185,15 +191,6 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
if (!*argv)
|
if (!*argv)
|
||||||
*--argv = (char*)"-";
|
*--argv = (char*)"-";
|
||||||
|
|
||||||
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK && !(flags & FLAG_CHECK)) {
|
|
||||||
if (flags & FLAG_SILENT) {
|
|
||||||
bb_error_msg_and_die("-%c is meaningful only with -c", 's');
|
|
||||||
}
|
|
||||||
if (flags & FLAG_WARN) {
|
|
||||||
bb_error_msg_and_die("-%c is meaningful only with -c", 'w');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK && (flags & FLAG_CHECK)) {
|
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK && (flags & FLAG_CHECK)) {
|
||||||
FILE *pre_computed_stream;
|
FILE *pre_computed_stream;
|
||||||
@ -244,6 +241,14 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
bb_error_msg("WARNING: %d of %d computed checksums did NOT match",
|
bb_error_msg("WARNING: %d of %d computed checksums did NOT match",
|
||||||
count_failed, count_total);
|
count_failed, count_total);
|
||||||
}
|
}
|
||||||
|
if (count_total == 0) {
|
||||||
|
return_value = EXIT_FAILURE;
|
||||||
|
/*
|
||||||
|
* md5sum from GNU coreutils 8.25 says:
|
||||||
|
* md5sum: <FILE>: no properly formatted MD5 checksum lines found
|
||||||
|
*/
|
||||||
|
bb_error_msg("%s: no checksum lines found", *argv);
|
||||||
|
}
|
||||||
fclose_if_not_stdin(pre_computed_stream);
|
fclose_if_not_stdin(pre_computed_stream);
|
||||||
} else {
|
} else {
|
||||||
uint8_t *hash_value = hash_file(*argv);
|
uint8_t *hash_value = hash_file(*argv);
|
||||||
|
@ -23,6 +23,8 @@ test -f "$bindir/.config" && . "$bindir/.config"
|
|||||||
test x"$CONFIG_FEATURE_FANCY_HEAD" != x"y" \
|
test x"$CONFIG_FEATURE_FANCY_HEAD" != x"y" \
|
||||||
&& { echo "SKIPPED: $sum"; exit 0; }
|
&& { echo "SKIPPED: $sum"; exit 0; }
|
||||||
|
|
||||||
|
FAILCOUNT=0
|
||||||
|
|
||||||
text="The quick brown fox jumps over the lazy dog"
|
text="The quick brown fox jumps over the lazy dog"
|
||||||
text=`yes "$text" | head -c 9999`
|
text=`yes "$text" | head -c 9999`
|
||||||
|
|
||||||
@ -33,11 +35,21 @@ while test $n -le 999; do
|
|||||||
n=$(($n+1))
|
n=$(($n+1))
|
||||||
done | "$sum"
|
done | "$sum"
|
||||||
)`
|
)`
|
||||||
|
if test x"$result" != x"$expected -"; then
|
||||||
if test x"$result" = x"$expected -"; then
|
echo "FAIL: $sum (r:$result exp:$expected)"
|
||||||
|
: $((FAILCOUNT++))
|
||||||
|
else
|
||||||
echo "PASS: $sum"
|
echo "PASS: $sum"
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "FAIL: $sum (r:$result exp:$expected)"
|
# GNU compat: -c EMPTY must fail (exitcode 1)!
|
||||||
exit 1
|
>EMPTY
|
||||||
|
if "$sum" -c EMPTY 2>/dev/null; then
|
||||||
|
echo "FAIL: $sum -c EMPTY"
|
||||||
|
: $((FAILCOUNT++))
|
||||||
|
else
|
||||||
|
echo "PASS: $sum -c EMPTY"
|
||||||
|
fi
|
||||||
|
rm EMPTY
|
||||||
|
|
||||||
|
exit $FAILCOUNT
|
||||||
|
Loading…
Reference in New Issue
Block a user