From: Pádraig Brady Date: Mon, 4 Mar 2024 16:33:23 +0000 (+0000) Subject: cksum: consistently validate --length attributes X-Git-Tag: v9.5~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fea833591ba787b1232d13ac4b985bea1e7601de;p=thirdparty%2Fcoreutils.git cksum: consistently validate --length attributes * src/digest.c (main): Only validate the last used --length for being a multiple of 8. * tests/cksum/b2sum.sh: Add a test case. Fixes https://bugs.gnu.org/69546 --- diff --git a/src/digest.c b/src/digest.c index 0d82eb6b41..96b811b6c8 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 cc480a478e..43a62d2fbd 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