]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/efiemu/prepare.c: Remove variable length arrays.
authorVladimir Serbinenko <phcoder@gmail.com>
Tue, 12 Nov 2013 15:12:28 +0000 (16:12 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Tue, 12 Nov 2013 15:12:28 +0000 (16:12 +0100)
ChangeLog
grub-core/efiemu/prepare.c

index 2931b7a1ff508c0193dd5461aad47ada172c3188..724457f0d9449d7a223a61c601515445d2f7aecd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/efiemu/prepare.c: Remove variable length arrays.
+
 2013-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/osdep/windows/hostdisk.c (grub_util_fd_strerror): Silence
index 2aef8634dec70c11d116d9771f0f268fbf71ac33..fb1b25d17f2b971f0f51aaac310dc7d3c1419f63 100644 (file)
@@ -122,7 +122,10 @@ SUFFIX (grub_efiemu_crc) (void)
   int handle;
   grub_off_t off;
   struct SUFFIX (grub_efiemu_runtime_services) *runtime_services;
-  grub_uint8_t crc32_context[GRUB_MD_CRC32->contextsize];
+  grub_uint32_t crc32_val;
+
+  if (GRUB_MD_CRC32->mdlen != 4)
+    return grub_error (GRUB_ERR_BUG, "incorrect mdlen");
 
   /* compute CRC32 of runtime_services */
   err = grub_efiemu_resolve_symbol ("efiemu_runtime_services",
@@ -134,12 +137,11 @@ SUFFIX (grub_efiemu_crc) (void)
        ((grub_uint8_t *) grub_efiemu_mm_obtain_request (handle) + off);
 
   runtime_services->hdr.crc32 = 0;
-  GRUB_MD_CRC32->init(crc32_context);
-  GRUB_MD_CRC32->write(crc32_context, runtime_services, runtime_services->hdr.header_size);
-  GRUB_MD_CRC32->final(crc32_context);
 
+  grub_crypto_hash (GRUB_MD_CRC32, &crc32_val,
+                   runtime_services, runtime_services->hdr.header_size);
   runtime_services->hdr.crc32 =
-      grub_be_to_cpu32(*(grub_uint32_t*)GRUB_MD_CRC32->read(crc32_context));
+      grub_be_to_cpu32(crc32_val);
 
   err = grub_efiemu_resolve_symbol ("efiemu_system_table", &handle, &off);
   if (err)
@@ -147,12 +149,11 @@ SUFFIX (grub_efiemu_crc) (void)
 
   /* compute CRC32 of system table */
   SUFFIX (grub_efiemu_system_table)->hdr.crc32 = 0;
-  GRUB_MD_CRC32->init(crc32_context);
-  GRUB_MD_CRC32->write(crc32_context, SUFFIX (grub_efiemu_system_table),
-                     SUFFIX (grub_efiemu_system_table)->hdr.header_size);
-  GRUB_MD_CRC32->final(crc32_context);
+  grub_crypto_hash (GRUB_MD_CRC32, &crc32_val,
+                   SUFFIX (grub_efiemu_system_table),
+                   SUFFIX (grub_efiemu_system_table)->hdr.header_size);
   SUFFIX (grub_efiemu_system_table)->hdr.crc32 =
-      grub_be_to_cpu32(*(grub_uint32_t*)GRUB_MD_CRC32->read(crc32_context));
+      grub_be_to_cpu32(crc32_val);
 
   grub_dprintf ("efiemu","system_table = %p, runtime_services = %p\n",
                SUFFIX (grub_efiemu_system_table), runtime_services);