From: Philip Withnall Date: Wed, 13 Dec 2017 12:51:59 +0000 (+0000) Subject: ostree/fsck: Handle refspecs from ostree_repo_list_refs() X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~28^2~16 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b0e7b26921a7d6a6d5aa0295f91cfb9725d66b4c;p=ostree.git ostree/fsck: Handle refspecs from ostree_repo_list_refs() 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 Closes: #1347 Approved by: cgwalters --- diff --git a/src/ostree/ot-builtin-fsck.c b/src/ostree/ot-builtin-fsck.c index 6ebb3c83..6cd9b457 100644 --- a/src/ostree/ot-builtin-fsck.c +++ b/src/ostree/ot-builtin-fsck.c @@ -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)