summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2020-08-18 11:39:52 +0200
committerAlexander Larsson <alexander.larsson@gmail.com>2020-08-18 11:55:43 +0200
commit8c23c90c1e8f4cc4e83a85cd00844875fdf99b6b (patch)
tree3bb183d61c09e627e1408708c66c35e1ac2d3253
parentc95cb1973d0cebd31d46e29bd0ebfcca5faa5a1a (diff)
downloadflatpak-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.c18
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))
{