]> git.proxmox.com Git - grub2.git/commitdiff
* grub-core/kern/efi/mm.c (grub_efi_get_memory_map): Never return a
authorVladimir Serbinenko <phcoder@gmail.com>
Wed, 21 Jan 2015 09:17:36 +0000 (10:17 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Wed, 21 Jan 2015 16:42:15 +0000 (17:42 +0100)
descriptor_size==0 to avoid potential divisions by zero.

ChangeLog
grub-core/kern/efi/mm.c

index 167056907822245ed4894a0babab2da9b8711be8..f9ac59915bbb97c21285a1994bca25675a3f5269 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-20  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/kern/efi/mm.c (grub_efi_get_memory_map): Never return a
+       descriptor_size==0 to avoid potential divisions by zero.
+
 2015-01-20  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/osdep/haiku/getroot.c (grub_util_find_partition_start_os):
index be37afd9dc403c9654c9575a04757672e4987037..20a47aaf5d0df376090510ddb8337ecc8aa18e98 100644 (file)
@@ -230,6 +230,7 @@ grub_efi_get_memory_map (grub_efi_uintn_t *memory_map_size,
   grub_efi_boot_services_t *b;
   grub_efi_uintn_t key;
   grub_efi_uint32_t version;
+  grub_efi_uintn_t size;
 
   if (grub_efi_is_finished)
     {
@@ -259,10 +260,14 @@ grub_efi_get_memory_map (grub_efi_uintn_t *memory_map_size,
     map_key = &key;
   if (! descriptor_version)
     descriptor_version = &version;
+  if (! descriptor_size)
+    descriptor_size = &size;
 
   b = grub_efi_system_table->boot_services;
   status = efi_call_5 (b->get_memory_map, memory_map_size, memory_map, map_key,
                              descriptor_size, descriptor_version);
+  if (*descriptor_size == 0)
+    *descriptor_size = sizeof (grub_efi_memory_descriptor_t);
   if (status == GRUB_EFI_SUCCESS)
     return 1;
   else if (status == GRUB_EFI_BUFFER_TOO_SMALL)