mirror of
https://github.com/coreutils/coreutils.git
synced 2024-11-27 03:44:26 +08:00
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
This commit is contained in:
parent
c877c7c1ee
commit
fea833591b
10
src/digest.c
10
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));
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user