]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/reiserfs.c (grub_reiserfs_uuid): Reject 0-uuid as
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 14 Jan 2012 22:36:21 +0000 (23:36 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 14 Jan 2012 22:36:21 +0000 (23:36 +0100)
created when no uuid support is compiled into mkfs.reiser.

ChangeLog
grub-core/fs/reiserfs.c

index 3918905873482c742009dc43df2ec380adc509bc..da6be5aad454873fa4dcd4afecd45db2c5f1f0ae 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/reiserfs.c (grub_reiserfs_uuid): Reject 0-uuid as
+       created when no uuid support is compiled into mkfs.reiser.
+
 2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/hfs.c (macroman_to_utf8): Convert / to :.
index 639de8d741bf335d1b6364c962a60cd4b8aa4846..82541210db217cfde2b95675785ef9882fc9878b 100644 (file)
@@ -1351,21 +1351,25 @@ grub_reiserfs_uuid (grub_device_t device, char **uuid)
 
   grub_dl_ref (my_mod);
 
+  *uuid = NULL;
   data = grub_reiserfs_mount (disk);
   if (data)
     {
-      *uuid = grub_xasprintf ("%04x%04x-%04x-%04x-%04x-%04x%04x%04x",
-                            grub_be_to_cpu16 (data->superblock.uuid[0]),
-                            grub_be_to_cpu16 (data->superblock.uuid[1]),
-                            grub_be_to_cpu16 (data->superblock.uuid[2]),
-                            grub_be_to_cpu16 (data->superblock.uuid[3]),
-                            grub_be_to_cpu16 (data->superblock.uuid[4]),
-                            grub_be_to_cpu16 (data->superblock.uuid[5]),
-                            grub_be_to_cpu16 (data->superblock.uuid[6]),
-                            grub_be_to_cpu16 (data->superblock.uuid[7]));
+      unsigned i;
+      for (i = 0; i < ARRAY_SIZE (data->superblock.uuid); i++)
+       if (data->superblock.uuid[i])
+         break;
+      if (i < ARRAY_SIZE (data->superblock.uuid))
+       *uuid = grub_xasprintf ("%04x%04x-%04x-%04x-%04x-%04x%04x%04x",
+                               grub_be_to_cpu16 (data->superblock.uuid[0]),
+                               grub_be_to_cpu16 (data->superblock.uuid[1]),
+                               grub_be_to_cpu16 (data->superblock.uuid[2]),
+                               grub_be_to_cpu16 (data->superblock.uuid[3]),
+                               grub_be_to_cpu16 (data->superblock.uuid[4]),
+                               grub_be_to_cpu16 (data->superblock.uuid[5]),
+                               grub_be_to_cpu16 (data->superblock.uuid[6]),
+                               grub_be_to_cpu16 (data->superblock.uuid[7]));
     }
-  else
-    *uuid = NULL;
 
   grub_dl_unref (my_mod);