From d5dd576d2095d085ed69f4c1efe7ecdfd9716fb7 Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Fri, 30 Jun 2017 09:01:56 -0700 Subject: [PATCH] pull: fix GLNX_HASH_TABLE_FOREACH_KV regressions These are regression from #971. We were stuffing a pointer size inside a variable of integer size. So the assignment was spilling over into other variables' storage space. Actually use a gpointer and GPOINTER_TO_[U]INT as was done originally. Also bump libglnx which has static checks for this error in the future. Update submodule: libglnx Closes: #990 Approved by: cgwalters --- libglnx | 2 +- src/libostree/ostree-repo-checkout.c | 4 ++-- src/libostree/ostree-repo-pull.c | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libglnx b/libglnx index 01e934c1..a37e6727 160000 --- a/libglnx +++ b/libglnx @@ -1 +1 @@ -Subproject commit 01e934c18efdbac071ebc19a8a95916d324970c9 +Subproject commit a37e672739197b8a7f3bdfe3f17099fe402f9a98 diff --git a/src/libostree/ostree-repo-checkout.c b/src/libostree/ostree-repo-checkout.c index 8729b81c..9ab9a623 100644 --- a/src/libostree/ostree-repo-checkout.c +++ b/src/libostree/ostree-repo-checkout.c @@ -1091,9 +1091,9 @@ ostree_repo_checkout_gc (OstreeRepo *self, if (!to_clean_dirs) return TRUE; /* Note early return */ - GLNX_HASH_TABLE_FOREACH (to_clean_dirs, guint, prefix) + GLNX_HASH_TABLE_FOREACH (to_clean_dirs, gpointer, prefix) { - g_autofree char *objdir_name = g_strdup_printf ("%02x", prefix); + g_autofree char *objdir_name = g_strdup_printf ("%02x", GPOINTER_TO_UINT (prefix)); g_auto(GLnxDirFdIterator) dfd_iter = { 0, }; if (!glnx_dirfd_iterator_init_at (self->uncompressed_objects_dir_fd, objdir_name, FALSE, diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index 31c825b8..fd9e9aff 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -4948,8 +4948,10 @@ ostree_repo_pull_from_remotes_async (OstreeRepo *self, /* Any refs left un-downloaded? If so, we’ve failed. */ GLNX_HASH_TABLE_FOREACH_KV (refs_pulled, const OstreeCollectionRef*, ref, - gboolean, is_pulled) + gpointer, is_pulled_pointer) { + gboolean is_pulled = GPOINTER_TO_INT (is_pulled_pointer); + if (is_pulled) continue;