diff --git a/src/digest.c b/src/digest.c index 0d82eb6b4..96b811b6c 100644 --- a/src/digest.c +++ b/src/digest.c @@ -1397,11 +1397,6 @@ main (int argc, char **argv) digest_length = xdectoumax (optarg, 0, UINTMAX_MAX, "", _("invalid length"), 0); digest_length_str = optarg; - if (digest_length % 8 != 0) - { - error (0, 0, _("invalid length: %s"), quote (digest_length_str)); - error (EXIT_FAILURE, 0, _("length is not a multiple of 8")); - } break; #endif #if !HASH_ALGO_SUM @@ -1476,6 +1471,11 @@ main (int argc, char **argv) error (EXIT_FAILURE, 0, _("--length is only supported with --algorithm=blake2b")); # endif + if (digest_length % 8 != 0) + { + error (0, 0, _("invalid length: %s"), quote (digest_length_str)); + error (EXIT_FAILURE, 0, _("length is not a multiple of 8")); + } if (digest_length > BLAKE2B_MAX_LEN * 8) { error (0, 0, _("invalid length: %s"), quote (digest_length_str)); diff --git a/tests/cksum/b2sum.sh b/tests/cksum/b2sum.sh index cc480a478..43a62d2fb 100755 --- a/tests/cksum/b2sum.sh +++ b/tests/cksum/b2sum.sh @@ -65,6 +65,10 @@ returns_ 1 $prog -c crash.check || fail=1 printf '0A0BA0' > overflow.check || framework_failure_ returns_ 1 $prog -c overflow.check || fail=1 +# This would fail before coreutil-9.4 +# Only validate the last specified, used length +$prog -l 123 -l 128 /dev/null || fail=1 + done Exit $fail