grub2_generate: load sysroot before using it
authorJonathan Lebon <jlebon@redhat.com>
Thu, 24 Dec 2015 16:54:54 +0000 (11:54 -0500)
committerJonathan Lebon <jlebon@redhat.com>
Thu, 24 Dec 2015 17:41:22 +0000 (12:41 -0500)
The logic for checking which bootversion to use tries to access
sysroot->bootversion if the user didn't specify an explicit bootversion
on the command-line nor through the env var. However, at that point, the
sysroot object is not yet initialized, so it will always return 0, even
when it's 1.

This would cause e.g. `grub2-mkconfig` to have no output for the BLS
entries whenever the entries were under `/boot/loader.1`.

Related: RHBZ1293986

src/ostree/ot-admin-instutil-builtin-grub2-generate.c

index 9f31c67a8730b6a4977032ae9c481e56e351f7c6..ee7fe702ca4ac6addb1dbd26412a32d58e5ad66c 100644 (file)
@@ -52,6 +52,9 @@ ot_admin_instutil_builtin_grub2_generate (int argc, char **argv, GCancellable *c
                                           &sysroot, cancellable, error))
     goto out;
 
+  if (!ostree_sysroot_load (sysroot, cancellable, error))
+    goto out;
+
   if (argc >= 2)
     {
       bootversion = (guint) g_ascii_strtoull (argv[1], NULL, 10);
@@ -72,9 +75,6 @@ ot_admin_instutil_builtin_grub2_generate (int argc, char **argv, GCancellable *c
       g_assert (bootversion == 0 || bootversion == 1);
     }
 
-  if (!ostree_sysroot_load (sysroot, cancellable, error))
-    goto out;
-
   if (!ostree_cmd__private__()->ostree_generate_grub2_config (sysroot, bootversion, 1, cancellable, error))
     goto out;