ostree/fsck: Handle refspecs from ostree_repo_list_refs()
authorPhilip Withnall <withnall@endlessm.com>
Wed, 13 Dec 2017 12:51:59 +0000 (12:51 +0000)
committerAtomic Bot <atomic-devel@projectatomic.io>
Thu, 14 Dec 2017 14:18:44 +0000 (14:18 +0000)
It seems ostree_repo_list_refs() can return refspecs as hash table keys,
as well as just ref names. Handle that by parsing them before trying to
use them as ref names.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
Closes: #1347
Approved by: cgwalters

src/ostree/ot-builtin-fsck.c

index 6ebb3c83a542c4e8ea22a315dde02538b0a136bc..6cd9b45742954186a61042fb40fa25999f8522b3 100644 (file)
@@ -189,9 +189,16 @@ ostree_builtin_fsck (int argc, char **argv, OstreeCommandInvocation *invocation,
   gpointer key, value;
   g_hash_table_iter_init (&hash_iter, all_refs);
   while (g_hash_table_iter_next (&hash_iter, &key, &value))
-    if (!fsck_commit_for_ref (repo, value, NULL, key,
-                              &found_corruption, cancellable, error))
-      return FALSE;
+    {
+      const char *refspec = key;
+      const char *checksum = value;
+      g_autofree char *ref_name = NULL;
+      if (!ostree_parse_refspec (refspec, NULL, &ref_name, error))
+        return FALSE;
+      if (!fsck_commit_for_ref (repo, checksum, NULL, ref_name,
+                                &found_corruption, cancellable, error))
+        return FALSE;
+    }
 
 #ifdef OSTREE_ENABLE_EXPERIMENTAL_API
   if (!opt_quiet)