From 00f22d406df2fe82459f788ea618f0da667ddeca Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Tue, 7 Jun 2022 18:08:42 +0200 Subject: [PATCH] installation: Avoid dereferencing a potentially NULL pointer ... in flatpak_decomposed_get_ref(). Fallout from db11607016712b02d3d0c4f08f365bccf1b2b3c1 --- common/flatpak-installation.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/common/flatpak-installation.c b/common/flatpak-installation.c index 2aee2fd6..7d75c413 100644 --- a/common/flatpak-installation.c +++ b/common/flatpak-installation.c @@ -3122,14 +3122,25 @@ flatpak_installation_list_unused_refs_with_options (FlatpakInstallation *self, { g_autoptr(GError) local_error = NULL; FlatpakInstalledRef *ref = NULL; - g_autoptr(FlatpakDecomposed) decomposed = flatpak_decomposed_new_from_ref (*iter, &local_error); - if (decomposed) - ref = get_ref (dir, decomposed, cancellable, &local_error); + g_autoptr(FlatpakDecomposed) decomposed = NULL; - if (ref != NULL) - g_ptr_array_add (refs, ref); - else - g_warning ("Unexpected failure getting ref for %s: %s", flatpak_decomposed_get_ref (decomposed), local_error->message); + decomposed = flatpak_decomposed_new_from_ref (*iter, &local_error); + if (decomposed == NULL) + { + g_warning ("Unexpected failure parsing ref %s: %s", *iter, local_error->message); + continue; + } + + ref = get_ref (dir, decomposed, cancellable, &local_error); + if (ref == NULL) + { + g_warning ("Unexpected failure getting ref for %s: %s", + flatpak_decomposed_get_ref (decomposed), + local_error->message); + continue; + } + + g_ptr_array_add (refs, ref); } return g_steal_pointer (&refs);