bin/admin: Check for booted sysroot for root-required commands
authorColin Walters <walters@verbum.org>
Fri, 1 Sep 2017 19:03:02 +0000 (15:03 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Fri, 1 Sep 2017 21:34:33 +0000 (21:34 +0000)
Drops a use of `ostree_sysroot_get_path()`, prep for `ostree_sysroot_new_at()`.

Closes: #1123
Approved by: jlebon

src/ostree/ot-main.c

index cd7f0f4c5ae32ef8c6a017e5f4acaab1ca58d9e3..011ae16c3bcc75da0493c11c188755522130831b 100644 (file)
@@ -403,10 +403,12 @@ ostree_admin_option_context_parse (GOptionContext *context,
 
   if (flags & OSTREE_ADMIN_BUILTIN_FLAG_SUPERUSER)
     {
-      GFile *path = ostree_sysroot_get_path (sysroot);
+      OstreeDeployment *booted = ostree_sysroot_get_booted_deployment (sysroot);
 
-      /* If sysroot path is "/" then user must be root. */
-      if (!g_file_has_parent (path, NULL) && getuid () != 0)
+      /* Only require root if we're manipulating a booted sysroot. (Mostly
+       * useful for the test suite)
+       */
+      if (booted && getuid () != 0)
         {
           g_set_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED,
                        "You must be root to perform this command");