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

index 250ef1488be3016eaedb5bff4c4f5b14f7992ce7..5ea79f1365ab3e683777bf29680c01cf913957f8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/commands/xnu_uuid.c: Remove variable length arrays.
+
 2013-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/tests/xnu_uuid_test.c: New test.
index 8161d570ef5151371c4387313f3d65406cd9435a..ae4b3a41537d39dc825998d69ee52de0d466c2fc 100644 (file)
@@ -50,7 +50,7 @@ grub_cmd_xnu_uuid (grub_command_t cmd __attribute__ ((unused)),
   grub_uint8_t *xnu_uuid;
   char uuid_string[sizeof ("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")];
   char *ptr;
-  grub_uint8_t ctx[GRUB_MD_MD5->contextsize];
+  void *ctx;
   int low = 0;
 
   if (argc < 1)
@@ -65,11 +65,14 @@ grub_cmd_xnu_uuid (grub_command_t cmd __attribute__ ((unused)),
 
   serial = grub_cpu_to_be64 (grub_strtoull (args[0], 0, 16));
 
-  GRUB_MD_MD5->init (&ctx);
-  GRUB_MD_MD5->write (&ctx, hash_prefix, sizeof (hash_prefix));
-  GRUB_MD_MD5->write (&ctx, &serial, sizeof (serial));
-  GRUB_MD_MD5->final (&ctx);
-  xnu_uuid = GRUB_MD_MD5->read (&ctx);
+  ctx = grub_zalloc (GRUB_MD_MD5->contextsize);
+  if (!ctx)
+    return grub_errno;
+  GRUB_MD_MD5->init (ctx);
+  GRUB_MD_MD5->write (ctx, hash_prefix, sizeof (hash_prefix));
+  GRUB_MD_MD5->write (ctx, &serial, sizeof (serial));
+  GRUB_MD_MD5->final (ctx);
+  xnu_uuid = GRUB_MD_MD5->read (ctx);
 
   grub_snprintf (uuid_string, sizeof (uuid_string),
                "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
@@ -91,6 +94,8 @@ grub_cmd_xnu_uuid (grub_command_t cmd __attribute__ ((unused)),
   if (argc > 1)
     grub_env_set (args[1], uuid_string);
 
+  grub_free (ctx);
+
   return GRUB_ERR_NONE;
 }