]> git.proxmox.com Git - grub2.git/commitdiff
* grub-core/commands/efi/lssal.c: Fix terminating condition.
authorVladimir Serbinenko <phcoder@gmail.com>
Wed, 11 Dec 2013 14:59:12 +0000 (15:59 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Wed, 11 Dec 2013 14:59:12 +0000 (15:59 +0100)
ChangeLog
grub-core/commands/efi/lssal.c

index 385155b4436d6d22c1e888c3f7863c3091be4d56..ad5daf02a1dad9ae39c24422cc0c0b184260606a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-12-11  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/commands/efi/lssal.c: Fix terminating condition.
+
 2013-12-11  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Introduce grub_efi_packed_guid and use it where alignment is not
index d123389fd200f26519e81f388946638a4234cfb6..5084ddd8b05e9f382c767f17461ad619d1ecbb58 100644 (file)
@@ -32,7 +32,7 @@ disp_sal (void *table)
 {
   struct grub_efi_sal_system_table *t = table;
   void *desc;
-  grub_uint32_t len, l;
+  grub_uint32_t len, l, i;
 
   grub_printf ("SAL rev: %02x, signature: %x, len:%x\n",
               t->sal_rev, t->signature, t->total_table_len);
@@ -44,7 +44,9 @@ disp_sal (void *table)
 
   desc = t->entries;
   len = t->total_table_len - sizeof (struct grub_efi_sal_system_table);
-  while (len > 0)
+  if (t->total_table_len <= sizeof (struct grub_efi_sal_system_table))
+    return;
+  for (i = 0; i < t->entry_count; i++)
     {
       switch (*(grub_uint8_t *) desc)
        {
@@ -123,6 +125,8 @@ disp_sal (void *table)
          return;
        }
       desc = (grub_uint8_t *)desc + l;
+      if (len <= l)
+       return;
       len -= l;
     }
 }