From: Vladimir Serbinenko Date: Tue, 12 Nov 2013 00:25:03 +0000 (+0100) Subject: * grub-core/io/lzopio.c: Remove variable length arrays. X-Git-Tag: grub-2.02-beta1~388 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e34a34e4484cabbbcbecac13f7b8c1c43fae5f8;p=thirdparty%2Fgrub.git * grub-core/io/lzopio.c: Remove variable length arrays. --- diff --git a/ChangeLog b/ChangeLog index 3d8ba00e4..8349cb7bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-11-12 Vladimir Serbinenko + + * grub-core/io/lzopio.c: Remove variable length arrays. + 2013-11-12 Vladimir Serbinenko * include/grub/crypto.h: Add maximums on hash size and cipher block diff --git a/grub-core/io/lzopio.c b/grub-core/io/lzopio.c index 0e7e2e56b..2895e2102 100644 --- a/grub-core/io/lzopio.c +++ b/grub-core/io/lzopio.c @@ -166,15 +166,17 @@ read_block_data (struct grub_lzopio *lzopio) if (lzopio->ccheck_fun) { - GRUB_PROPERLY_ALIGNED_ARRAY (context, lzopio->ccheck_fun->contextsize); + grub_uint8_t computed_hash[GRUB_CRYPTO_MAX_MDLEN]; - lzopio->ccheck_fun->init (context); - lzopio->ccheck_fun->write (context, lzopio->block.cdata, - lzopio->block.csize); - lzopio->ccheck_fun->final (context); + if (lzopio->ccheck_fun->mdlen > GRUB_CRYPTO_MAX_MDLEN) + return -1; + + grub_crypto_hash (lzopio->ccheck_fun, computed_hash, + lzopio->block.cdata, + lzopio->block.csize); if (grub_memcmp - (lzopio->ccheck_fun->read (context), &lzopio->block.ccheck, + (computed_hash, &lzopio->block.ccheck, sizeof (lzopio->block.ccheck)) != 0) return -1; } @@ -212,15 +214,17 @@ uncompress_block (struct grub_lzopio *lzopio) if (lzopio->ucheck_fun) { - GRUB_PROPERLY_ALIGNED_ARRAY (context, lzopio->ucheck_fun->contextsize); + grub_uint8_t computed_hash[GRUB_CRYPTO_MAX_MDLEN]; + + if (lzopio->ucheck_fun->mdlen > GRUB_CRYPTO_MAX_MDLEN) + return -1; - lzopio->ucheck_fun->init (context); - lzopio->ucheck_fun->write (context, lzopio->block.udata, - lzopio->block.usize); - lzopio->ucheck_fun->final (context); + grub_crypto_hash (lzopio->ucheck_fun, computed_hash, + lzopio->block.udata, + lzopio->block.usize); if (grub_memcmp - (lzopio->ucheck_fun->read (context), &lzopio->block.ucheck, + (computed_hash, &lzopio->block.ucheck, sizeof (lzopio->block.ucheck)) != 0) return -1; }