diff options
| author | Alexander Larsson <alexl@redhat.com> | 2020-08-18 11:39:52 +0200 |
|---|---|---|
| committer | Alexander Larsson <alexander.larsson@gmail.com> | 2020-08-18 11:55:43 +0200 |
| commit | 8c23c90c1e8f4cc4e83a85cd00844875fdf99b6b (patch) | |
| tree | 3bb183d61c09e627e1408708c66c35e1ac2d3253 | |
| parent | c95cb1973d0cebd31d46e29bd0ebfcca5faa5a1a (diff) | |
| download | flatpak-8c23c90c1e8f4cc4e83a85cd00844875fdf99b6b.tar.gz | |
run: Fix double free in the cups config file parser
We were returning a g_autofree:d string and it was then also freed
by the parent.
| -rw-r--r-- | common/flatpak-run.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/common/flatpak-run.c b/common/flatpak-run.c index 4bd10fc2..940c8c61 100644 --- a/common/flatpak-run.c +++ b/common/flatpak-run.c @@ -388,7 +388,7 @@ static char * flatpak_run_get_cups_server_name (void) { g_autofree char * cups_server = NULL; - g_autofree char * cups_config = NULL; + g_autofree char * cups_config_path = NULL; /* TODO * we don't currently support cups servers located on the network, if such @@ -397,18 +397,18 @@ flatpak_run_get_cups_server_name (void) */ cups_server = g_strdup (g_getenv ("CUPS_SERVER")); if (cups_server && flatpak_run_cups_check_server_is_socket (cups_server)) - return cups_server; + return g_steal_pointer (&cups_server); + g_clear_pointer (&cups_server, g_free); - g_free (cups_server); - cups_config = g_build_filename (g_get_home_dir (), ".cups/client.conf", NULL); - cups_server = flatpak_run_get_cups_server_name_config (cups_config); + cups_config_path = g_build_filename (g_get_home_dir (), ".cups/client.conf", NULL); + cups_server = flatpak_run_get_cups_server_name_config (cups_config_path); if (cups_server && flatpak_run_cups_check_server_is_socket (cups_server)) - return cups_server; + return g_steal_pointer (&cups_server); + g_clear_pointer (&cups_server, g_free); - g_free (cups_server); cups_server = flatpak_run_get_cups_server_name_config ("/etc/cups/client.conf"); if (cups_server && flatpak_run_cups_check_server_is_socket (cups_server)) - return cups_server; + return g_steal_pointer (&cups_server); // Fallback to default socket return g_strdup ("/var/run/cups/cups.sock"); @@ -418,7 +418,7 @@ static void flatpak_run_add_cups_args (FlatpakBwrap *bwrap) { g_autofree char * sandbox_server_name = g_strdup ("/var/run/cups/cups.sock"); - g_autofree char * cups_server_name = flatpak_run_get_cups_server_name(); + g_autofree char * cups_server_name = flatpak_run_get_cups_server_name (); if (!g_file_test (cups_server_name, G_FILE_TEST_EXISTS)) { |
