86 lines
3.3 KiB
Diff
86 lines
3.3 KiB
Diff
From b912053c6cc556f131465c1fd877d7bd0b433539 Mon Sep 17 00:00:00 2001
|
|
From: Phaedrus Leeds <mwleeds@protonmail.com>
|
|
Date: Sun, 2 May 2021 21:53:02 -0500
|
|
Subject: [PATCH] Fix several memory leaks
|
|
|
|
(cherry picked from commit 404d7c6941baf63d1b3ccbe9ee9d34f3ff12f35f)
|
|
---
|
|
app/flatpak-builtins-document-export.c | 6 +++---
|
|
common/flatpak-dir.c | 7 ++++---
|
|
common/flatpak-utils.c | 1 +
|
|
portal/flatpak-portal.c | 2 +-
|
|
4 files changed, 9 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/app/flatpak-builtins-document-export.c b/app/flatpak-builtins-document-export.c
|
|
index 15f1ad1275..e701a826bb 100644
|
|
--- a/app/flatpak-builtins-document-export.c
|
|
+++ b/app/flatpak-builtins-document-export.c
|
|
@@ -90,8 +90,8 @@ flatpak_builtin_document_export (int argc, char **argv,
|
|
g_autofree char *dirname = NULL;
|
|
g_autofree char *doc_path = NULL;
|
|
XdpDbusDocuments *documents;
|
|
- int fd, fd_id;
|
|
- int i;
|
|
+ glnx_autofd int fd = -1;
|
|
+ int i, fd_id;
|
|
GUnixFDList *fd_list = NULL;
|
|
const char *doc_id;
|
|
struct stat stbuf;
|
|
@@ -173,7 +173,7 @@ flatpak_builtin_document_export (int argc, char **argv,
|
|
|
|
fd_list = g_unix_fd_list_new ();
|
|
fd_id = g_unix_fd_list_append (fd_list, fd, error);
|
|
- close (fd);
|
|
+ glnx_close_fd (&fd);
|
|
|
|
if (opt_noexist)
|
|
{
|
|
diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c
|
|
index 94a86f4afb..0724677b91 100644
|
|
--- a/common/flatpak-dir.c
|
|
+++ b/common/flatpak-dir.c
|
|
@@ -13690,14 +13690,15 @@ parse_ref_file (GKeyFile *keyfile,
|
|
collection_id = g_key_file_get_string (keyfile, FLATPAK_REF_GROUP,
|
|
FLATPAK_REF_DEPLOY_COLLECTION_ID_KEY, NULL);
|
|
|
|
- if (collection_id == NULL || *collection_id == '\0')
|
|
+ if (collection_id != NULL && *collection_id == '\0')
|
|
+ g_clear_pointer (&collection_id, g_free);
|
|
+ if (collection_id == NULL)
|
|
{
|
|
collection_id = g_key_file_get_string (keyfile, FLATPAK_REF_GROUP,
|
|
FLATPAK_REF_COLLECTION_ID_KEY, NULL);
|
|
}
|
|
-
|
|
if (collection_id != NULL && *collection_id == '\0')
|
|
- collection_id = NULL;
|
|
+ g_clear_pointer (&collection_id, g_free);
|
|
|
|
if (collection_id != NULL && gpg_data == NULL)
|
|
return flatpak_fail_error (error, FLATPAK_ERROR_INVALID_DATA, _("Collection ID requires GPG key to be provided"));
|
|
diff --git a/common/flatpak-utils.c b/common/flatpak-utils.c
|
|
index 56cbb06db3..84bc6a398d 100644
|
|
--- a/common/flatpak-utils.c
|
|
+++ b/common/flatpak-utils.c
|
|
@@ -2235,6 +2235,7 @@ flatpak_parse_repofile (const char *remote_name,
|
|
decoded = g_base64_decode (gpg_key, &decoded_len);
|
|
if (decoded_len < 10) /* Check some minimal size so we don't get crap */
|
|
{
|
|
+ g_free (decoded);
|
|
flatpak_fail_error (error, FLATPAK_ERROR_INVALID_DATA, _("Invalid gpg key"));
|
|
return NULL;
|
|
}
|
|
diff --git a/portal/flatpak-portal.c b/portal/flatpak-portal.c
|
|
index 7887c57a3b..0539ff2d22 100644
|
|
--- a/portal/flatpak-portal.c
|
|
+++ b/portal/flatpak-portal.c
|
|
@@ -767,7 +767,7 @@ handle_spawn (PortalFlatpak *object,
|
|
const gint *fds = NULL;
|
|
gint fds_len = 0;
|
|
g_autofree FdMapEntry *fd_map = NULL;
|
|
- gchar **env;
|
|
+ g_auto(GStrv) env = NULL;
|
|
gint32 max_fd;
|
|
GKeyFile *app_info;
|
|
g_autoptr(GPtrArray) flatpak_argv = g_ptr_array_new_with_free_func (g_free);
|