]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/io/lzopio.c: Remove variable length arrays.
authorVladimir Serbinenko <phcoder@gmail.com>
Tue, 12 Nov 2013 00:25:03 +0000 (01:25 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Tue, 12 Nov 2013 00:25:03 +0000 (01:25 +0100)
ChangeLog
grub-core/io/lzopio.c

index 3d8ba00e47b35a28d0065fda7f39993c809ddc0a..8349cb7bd027201e24e1e9cc56bb757fcae85786 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/io/lzopio.c: Remove variable length arrays.
+
 2013-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * include/grub/crypto.h: Add maximums on hash size and cipher block
index 0e7e2e56b97524655023e7ced878fb173904484c..2895e2102a67947666377d145e4733e747ff81b9 100644 (file)
@@ -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;
        }