summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/gdm-address.c10
-rw-r--r--common/gdm-common.c3
-rw-r--r--common/gdm-profile.c7
-rw-r--r--common/gdm-settings-desktop-backend.c81
-rw-r--r--common/gdm-settings-direct.c25
-rw-r--r--daemon/gdm-dbus-util.c39
-rw-r--r--daemon/gdm-display-access-file.c62
-rw-r--r--daemon/gdm-display.c92
-rw-r--r--daemon/gdm-launch-environment.c59
-rw-r--r--daemon/gdm-legacy-display.c29
-rw-r--r--daemon/gdm-local-display-factory.c8
-rw-r--r--daemon/gdm-local-display.c4
-rw-r--r--daemon/gdm-manager.c13
-rw-r--r--daemon/gdm-server.c13
-rw-r--r--daemon/gdm-session-linux-auditor.c10
-rw-r--r--daemon/gdm-session-record.c5
-rw-r--r--daemon/gdm-session-settings.c13
-rw-r--r--daemon/gdm-session-worker-job.c49
-rw-r--r--daemon/gdm-session-worker.c167
-rw-r--r--daemon/gdm-session.c2
20 files changed, 219 insertions, 472 deletions
diff --git a/common/gdm-address.c b/common/gdm-address.c
index 66dc5904..d64bb2ee 100644
--- a/common/gdm-address.c
+++ b/common/gdm-address.c
@@ -236,19 +236,15 @@ _gdm_address_debug (GdmAddress *address,
void
gdm_address_debug (GdmAddress *address)
{
- char *hostname = NULL;
- char *host = NULL;
- char *port = NULL;
+ g_autofree char *hostname = NULL;
+ g_autofree char *host = NULL;
+ g_autofree char *port = NULL;
g_return_if_fail (address != NULL);
gdm_address_get_numeric_info (address, &host, &port);
_gdm_address_debug (address, host, port);
-
- g_free (hostname);
- g_free (host);
- g_free (port);
}
gboolean
diff --git a/common/gdm-common.c b/common/gdm-common.c
index 3e31f426..741c4a8c 100644
--- a/common/gdm-common.c
+++ b/common/gdm-common.c
@@ -578,7 +578,7 @@ gdm_get_script_environment (const char *username,
GHashTable *hash;
struct passwd *pwent;
- env = g_ptr_array_new ();
+ env = g_ptr_array_new_with_free_func (g_free);
/* create a hash table of current environment, then update keys has necessary */
hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
@@ -724,7 +724,6 @@ gdm_run_script (const char *dir,
&status,
&error);
- g_ptr_array_foreach (env, (GFunc)g_free, NULL);
g_ptr_array_free (env, TRUE);
g_strfreev (argv);
diff --git a/common/gdm-profile.c b/common/gdm-profile.c
index 1a37d325..ea9c0fe0 100644
--- a/common/gdm-profile.c
+++ b/common/gdm-profile.c
@@ -41,8 +41,8 @@ _gdm_profile_log (const char *func,
...)
{
va_list args;
- char *str;
- char *formatted;
+ g_autofree char *str = NULL;
+ g_autofree char *formatted = NULL;
const char *prgname;
if (format == NULL) {
@@ -68,8 +68,5 @@ _gdm_profile_log (const char *func,
formatted);
}
- g_free (formatted);
-
g_access (str, F_OK);
- g_free (str);
}
diff --git a/common/gdm-settings-desktop-backend.c b/common/gdm-settings-desktop-backend.c
index cdc287ad..276bb04f 100644
--- a/common/gdm-settings-desktop-backend.c
+++ b/common/gdm-settings-desktop-backend.c
@@ -62,15 +62,14 @@ _gdm_settings_desktop_backend_set_file_name (GdmSettingsDesktopBackend *backend,
const char *filename)
{
gboolean res;
- GError *error;
- char *contents;
+ g_autoptr(GError) error = NULL;
+ g_autofree char *contents = NULL;
g_free (backend->filename);
backend->filename = g_strdup (filename);
backend->key_file = g_key_file_new ();
- error = NULL;
res = g_key_file_load_from_file (backend->key_file,
backend->filename,
G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS,
@@ -83,7 +82,6 @@ _gdm_settings_desktop_backend_set_file_name (GdmSettingsDesktopBackend *backend,
if (contents != NULL) {
g_debug ("GdmSettings: %s is:\n%s\n", backend->filename, contents);
- g_free (contents);
}
}
@@ -135,21 +133,18 @@ parse_key_string (const char *keystring,
char **locale,
char **value)
{
- char **split1;
- char **split2;
+ g_auto(GStrv) split1 = NULL;
+ g_auto(GStrv) split2 = NULL;
char *g;
char *k;
char *l;
char *v;
char *tmp1;
char *tmp2;
- gboolean ret;
g_return_val_if_fail (keystring != NULL, FALSE);
- ret = FALSE;
g = k = v = l = NULL;
- split1 = split2 = NULL;
if (group != NULL) {
*group = g;
@@ -173,7 +168,7 @@ parse_key_string (const char *keystring,
|| split1 [0][0] == '\0'
|| split1 [1][0] == '\0') {
g_warning ("GdmSettingsDesktopBackend: invalid key: %s", keystring);
- goto out;
+ return FALSE;
}
g = split1 [0];
@@ -194,8 +189,6 @@ parse_key_string (const char *keystring,
*tmp1 = '\0';
}
- ret = TRUE;
-
if (group != NULL) {
*group = g_strdup (g);
}
@@ -208,12 +201,8 @@ parse_key_string (const char *keystring,
if (value != NULL) {
*value = g_strdup (v);
}
- out:
- g_strfreev (split1);
- g_strfreev (split2);
-
- return ret;
+ return TRUE;
}
static gboolean
@@ -222,55 +211,44 @@ gdm_settings_desktop_backend_get_value (GdmSettingsBackend *backend,
char **value,
GError **error)
{
- GError *local_error;
- char *val;
- char *g;
- char *k;
- char *l;
- gboolean ret;
+ g_autoptr(GError) local_error = NULL;
+ g_autofree char *val = NULL;
+ g_autofree char *g = NULL;
+ g_autofree char *k = NULL;
+ g_autofree char *l = NULL;
g_return_val_if_fail (GDM_IS_SETTINGS_BACKEND (backend), FALSE);
g_return_val_if_fail (key != NULL, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
- ret = FALSE;
*value = NULL;
- val = g = k = l = NULL;
/*GDM_SETTINGS_BACKEND_CLASS (gdm_settings_desktop_backend_parent_class)->get_value (display);*/
if (! parse_key_string (key, &g, &k, &l, NULL)) {
g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found");
- goto out;
+ return FALSE;
}
/*g_debug ("Getting key: %s %s %s", g, k, l);*/
- local_error = NULL;
val = g_key_file_get_value (GDM_SETTINGS_DESKTOP_BACKEND (backend)->key_file,
g,
k,
&local_error);
if (local_error != NULL) {
- g_error_free (local_error);
g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found");
- goto out;
+ return FALSE;
}
*value = g_strdup (val);
- ret = TRUE;
- out:
- g_free (val);
- g_free (g);
- g_free (k);
- g_free (l);
-
- return ret;
+
+ return TRUE;
}
static void
save_settings (GdmSettingsDesktopBackend *backend)
{
- GError *local_error;
- char *contents;
+ g_autoptr(GError) local_error = NULL;
+ g_autofree char *contents = NULL;
gsize length;
if (! backend->dirty) {
@@ -279,28 +257,21 @@ save_settings (GdmSettingsDesktopBackend *backend)
g_debug ("Saving settings to %s", backend->filename);
- local_error = NULL;
contents = g_key_file_to_data (backend->key_file, &length, &local_error);
if (local_error != NULL) {
g_warning ("Unable to save settings: %s", local_error->message);
- g_error_free (local_error);
return;
}
- local_error = NULL;
g_file_set_contents (backend->filename,
contents,
length,
&local_error);
if (local_error != NULL) {
g_warning ("Unable to save settings: %s", local_error->message);
- g_error_free (local_error);
- g_free (contents);
return;
}
- g_free (contents);
-
backend->dirty = FALSE;
}
@@ -333,11 +304,10 @@ gdm_settings_desktop_backend_set_value (GdmSettingsBackend *backend,
const char *value,
GError **error)
{
- GError *local_error;
- char *old_val;
- char *g;
- char *k;
- char *l;
+ g_autofree char *old_val = NULL;
+ g_autofree char *g = NULL;
+ g_autofree char *k = NULL;
+ g_autofree char *l = NULL;
g_return_val_if_fail (GDM_IS_SETTINGS_BACKEND (backend), FALSE);
g_return_val_if_fail (key != NULL, FALSE);
@@ -349,17 +319,12 @@ gdm_settings_desktop_backend_set_value (GdmSettingsBackend *backend,
return FALSE;
}
- local_error = NULL;
old_val = g_key_file_get_value (GDM_SETTINGS_DESKTOP_BACKEND (backend)->key_file,
g,
k,
- &local_error);
- if (local_error != NULL) {
- g_error_free (local_error);
- }
+ NULL);
/*g_debug ("Setting key: %s %s %s", g, k, l);*/
- local_error = NULL;
g_key_file_set_value (GDM_SETTINGS_DESKTOP_BACKEND (backend)->key_file,
g,
k,
@@ -370,8 +335,6 @@ gdm_settings_desktop_backend_set_value (GdmSettingsBackend *backend,
gdm_settings_backend_value_changed (backend, key, old_val, value);
- g_free (old_val);
-
return TRUE;
}
diff --git a/common/gdm-settings-direct.c b/common/gdm-settings-direct.c
index b6954fb0..c5435e8b 100644
--- a/common/gdm-settings-direct.c
+++ b/common/gdm-settings-direct.c
@@ -68,18 +68,11 @@ static gboolean
get_value (const char *key,
char **value)
{
- GError *error;
- char *str;
+ g_autofree char *str = NULL;
gboolean res;
- error = NULL;
- res = gdm_settings_get_value (settings_object, key, &str, &error);
+ res = gdm_settings_get_value (settings_object, key, &str, NULL);
if (! res) {
- if (error != NULL) {
- g_error_free (error);
- } else {
- }
-
return FALSE;
}
@@ -87,8 +80,6 @@ get_value (const char *key,
*value = g_strdup (str);
}
- g_free (str);
-
return TRUE;
}
@@ -99,7 +90,7 @@ gdm_settings_direct_get_int (const char *key,
GdmSettingsEntry *entry;
gboolean ret;
gboolean res;
- char *str;
+ g_autofree char *str = NULL;
g_return_val_if_fail (key != NULL, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
@@ -118,8 +109,6 @@ gdm_settings_direct_get_int (const char *key,
ret = gdm_settings_parse_value_as_integer (str, value);
- g_free (str);
-
return ret;
}
@@ -150,7 +139,7 @@ gdm_settings_direct_get_boolean (const char *key,
GdmSettingsEntry *entry;
gboolean ret;
gboolean res;
- char *str;
+ g_autofree char *str = NULL;
g_return_val_if_fail (key != NULL, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
@@ -169,8 +158,6 @@ gdm_settings_direct_get_boolean (const char *key,
ret = gdm_settings_parse_value_as_boolean (str, value);
- g_free (str);
-
return ret;
}
@@ -181,7 +168,7 @@ gdm_settings_direct_get_string (const char *key,
GdmSettingsEntry *entry;
gboolean ret;
gboolean res;
- char *str;
+ g_autofree char *str = NULL;
g_return_val_if_fail (key != NULL, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
@@ -202,8 +189,6 @@ gdm_settings_direct_get_string (const char *key,
*value = g_strdup (str);
- g_free (str);
-
return ret;
}
diff --git a/daemon/gdm-dbus-util.c b/daemon/gdm-dbus-util.c
index 678fe7c9..4600dad8 100644
--- a/daemon/gdm-dbus-util.c
+++ b/daemon/gdm-dbus-util.c
@@ -52,8 +52,8 @@ handle_connection (GDBusServer *server,
GDBusConnection *new_connection,
gpointer user_data)
{
+ g_autoptr(GDBusNodeInfo) bus_info = NULL;
GDBusInterfaceVTable bus_vtable = { handle_bus_method };
- GDBusNodeInfo *bus_info;
bus_info = g_dbus_node_info_new_for_xml (dbus_introspection,
NULL);
@@ -65,7 +65,6 @@ handle_connection (GDBusServer *server,
bus_info->interfaces[0],
&bus_vtable,
NULL, NULL, NULL);
- g_dbus_node_info_unref (bus_info);
/* We're not handling the signal */
return FALSE;
@@ -75,9 +74,9 @@ GDBusServer *
gdm_dbus_setup_private_server (GDBusAuthObserver *observer,
GError **error)
{
- char *guid;
+ g_autofree char *guid = NULL;
const char *client_address;
- GDBusServer *server;
+ g_autoptr(GDBusServer) server = NULL;
guid = g_dbus_generate_guid ();
@@ -99,9 +98,7 @@ gdm_dbus_setup_private_server (GDBusAuthObserver *observer,
G_CALLBACK (handle_connection),
NULL);
- g_free (guid);
-
- return server;
+ return g_steal_pointer (&server);
}
gboolean
@@ -109,9 +106,8 @@ gdm_dbus_get_pid_for_name (const char *system_bus_name,
pid_t *out_pid,
GError **error)
{
- GDBusConnection *bus;
- GVariant *reply;
- gboolean retval = FALSE;
+ g_autoptr(GDBusConnection) bus = NULL;
+ g_autoptr(GVariant) reply = NULL;
unsigned int v;
g_return_val_if_fail (system_bus_name != NULL, FALSE);
@@ -133,18 +129,13 @@ gdm_dbus_get_pid_for_name (const char *system_bus_name,
-1,
NULL, error);
if (reply == NULL) {
- goto out;
+ return FALSE;
}
g_variant_get (reply, "(u)", &v);
*out_pid = v;
- g_variant_unref (reply);
-
- retval = TRUE;
- out:
- g_object_unref (bus);
- return retval;
+ return TRUE;
}
gboolean
@@ -152,9 +143,8 @@ gdm_dbus_get_uid_for_name (const char *system_bus_name,
uid_t *out_uid,
GError **error)
{
- GDBusConnection *bus;
- GVariant *reply;
- gboolean retval = FALSE;
+ g_autoptr(GDBusConnection) bus = NULL;
+ g_autoptr(GVariant) reply = NULL;
unsigned int v;
g_return_val_if_fail (system_bus_name != NULL, FALSE);
@@ -176,18 +166,13 @@ gdm_dbus_get_uid_for_name (const char *system_bus_name,
-1,
NULL, error);
if (reply == NULL) {
- goto out;
+ return FALSE;
}
g_variant_get (reply, "(u)", &v);
*out_uid = v;
- g_variant_unref (reply);
-
- retval = TRUE;
- out:
- g_object_unref (bus);
- return retval;
+ return TRUE;
}
void
diff --git a/daemon/gdm-display-access-file.c b/daemon/gdm-display-access-file.c
index d0dd5cc8..28d7b7b2 100644
--- a/daemon/gdm-display-access-file.c
+++ b/daemon/gdm-display-access-file.c
@@ -222,7 +222,7 @@ _get_uid_and_gid_for_user (const char *username,
static void
clean_up_stale_auth_subdirs (void)
{
- GDir *dir;
+ g_autoptr(GDir) dir = NULL;
const char *filename;
dir = g_dir_open (GDM_XAUTH_DIR, 0, NULL);
@@ -232,16 +232,14 @@ clean_up_stale_auth_subdirs (void)
}
while ((filename = g_dir_read_name (dir)) != NULL) {
- char *path;
+ g_autofree char *path = NULL;
path = g_build_filename (GDM_XAUTH_DIR, filename, NULL);
/* Will only succeed if the directory is empty
*/
g_rmdir (path);
- g_free (path);
}
- g_dir_close (dir);
}
static FILE *
@@ -249,9 +247,9 @@ _create_xauth_file_for_user (const char *username,
char **filename,
GError **error)
{
- char *template;
+ g_autofree char *template = NULL;
+ g_autofree char *auth_filename = NULL;
const char *dir_name;
- char *auth_filename;
int fd;
FILE *fp;
uid_t uid;
@@ -261,11 +259,6 @@ _create_xauth_file_for_user (const char *username,
*filename = NULL;
- template = NULL;
- auth_filename = NULL;
- fp = NULL;
- fd = -1;
-
/* Create directory if not exist, then set permission 0711 and ownership root:gdm */
if (g_file_test (GDM_XAUTH_DIR, G_FILE_TEST_IS_DIR) == FALSE) {
g_remove (GDM_XAUTH_DIR);
@@ -274,7 +267,7 @@ _create_xauth_file_for_user (const char *username,
G_FILE_ERROR,
g_file_error_from_errno (errno),
g_strerror (errno));
- goto out;
+ return NULL;
}
g_chmod (GDM_XAUTH_DIR, 0711);
@@ -284,7 +277,7 @@ _create_xauth_file_for_user (const char *username,
GDM_DISPLAY_ERROR_GETTING_USER_INFO,
_("Could not find user ā€œ%sā€ on system"),
GDM_USERNAME);
- goto out;
+ return NULL;
}
if (chown (GDM_XAUTH_DIR, 0, gid) != 0) {
@@ -305,8 +298,7 @@ _create_xauth_file_for_user (const char *username,
GDM_DISPLAY_ERROR_GETTING_USER_INFO,
_("Could not find user ā€œ%sā€ on system"),
username);
- goto out;
-
+ return NULL;
}
template = g_strdup_printf (GDM_XAUTH_DIR
@@ -324,7 +316,7 @@ _create_xauth_file_for_user (const char *username,
"Unable to create temp dir from tempalte '%s': %s",
template,
g_strerror (errno));
- goto out;
+ return NULL;
}
g_debug ("GdmDisplayAccessFile: chowning %s to %u:%u",
@@ -337,7 +329,7 @@ _create_xauth_file_for_user (const char *username,
"Unable to change permission of '%s': %s",
dir_name,
g_strerror (errno));
- goto out;
+ return NULL;
}
auth_filename = g_build_filename (dir_name, "database", NULL);
@@ -356,7 +348,7 @@ _create_xauth_file_for_user (const char *username,
"Unable to open '%s': %s",
auth_filename,
g_strerror (errno));
- goto out;
+ return NULL;
}
g_debug ("GdmDisplayAccessFile: chowning %s to %u:%u", auth_filename, (guint)uid, (guint)gid);
@@ -369,8 +361,7 @@ _create_xauth_file_for_user (const char *username,
auth_filename,
g_strerror (errno));
close (fd);
- fd = -1;
- goto out;
+ return NULL;
}
/* now open up permissions on per-session directory */
@@ -385,22 +376,12 @@ _create_xauth_file_for_user (const char *username,
g_file_error_from_errno (errno),
g_strerror (errno));
close (fd);
- fd = -1;
- goto out;
+ return NULL;
}
- *filename = auth_filename;
- auth_filename = NULL;
-
- /* don't close it */
- fd = -1;
-out:
- g_free (template);
- g_free (auth_filename);
- if (fd != -1) {
- close (fd);
- }
+ *filename = g_steal_pointer (&auth_filename);
+ /* don't close fd on purpose */
return fp;
}
@@ -408,19 +389,18 @@ gboolean
gdm_display_access_file_open (GdmDisplayAccessFile *file,
GError **error)
{
- GError *create_error;
+ g_autoptr(GError) create_error = NULL;
g_return_val_if_fail (GDM_IS_DISPLAY_ACCESS_FILE (file), FALSE);
g_return_val_if_fail (file->fp == NULL, FALSE);
g_return_val_if_fail (file->path == NULL, FALSE);
- create_error = NULL;
file->fp = _create_xauth_file_for_user (file->username,
&file->path,
&create_error);
if (file->fp == NULL) {
- g_propagate_error (error, create_error);
+ g_propagate_error (error, g_steal_pointer (&create_error));
return FALSE;
}
@@ -477,7 +457,7 @@ gdm_display_access_file_add_display (GdmDisplayAccessFile *file,
gsize *cookie_size,
GError **error)
{
- GError *add_error;
+ g_autoptr(GError) add_error = NULL;
gboolean display_added;
g_return_val_if_fail (GDM_IS_DISPLAY_ACCESS_FILE (file), FALSE);
@@ -485,12 +465,11 @@ gdm_display_access_file_add_display (GdmDisplayAccessFile *file,
g_return_val_if_fail (display != NULL, FALSE);
g_return_val_if_fail (cookie != NULL, FALSE);
- add_error = NULL;
*cookie = gdm_generate_random_bytes (GDM_DISPLAY_ACCESS_COOKIE_SIZE,
&add_error);
if (*cookie == NULL) {
- g_propagate_error (error, add_error);
+ g_propagate_error (error, g_steal_pointer (&add_error));
return FALSE;
}
@@ -503,7 +482,7 @@ gdm_display_access_file_add_display (GdmDisplayAccessFile *file,
if (!display_added) {
g_free (*cookie);
*cookie = NULL;
- g_propagate_error (error, add_error);
+ g_propagate_error (error, g_steal_pointer (&add_error));
return FALSE;
}
@@ -574,7 +553,7 @@ gdm_display_access_file_add_display_with_cookie (GdmDisplayAccessFile *file,
void
gdm_display_access_file_close (GdmDisplayAccessFile *file)
{
- char *auth_dir;
+ g_autofree char *auth_dir = NULL;
g_return_if_fail (GDM_IS_DISPLAY_ACCESS_FILE (file));
g_return_if_fail (file->fp != NULL);
@@ -598,7 +577,6 @@ gdm_display_access_file_close (GdmDisplayAccessFile *file)
auth_dir,
g_strerror (errno));
}
- g_free (auth_dir);
}
g_free (file->path);
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c
index dd617227..39430a5b 100644
--- a/daemon/gdm-display.c
+++ b/daemon/gdm-display.c
@@ -193,8 +193,8 @@ gboolean
gdm_display_create_authority (GdmDisplay *self)
{
GdmDisplayPrivate *priv;
- GdmDisplayAccessFile *access_file;
- GError *error;
+ g_autoptr(GdmDisplayAccessFile) access_file = NULL;
+ g_autoptr(GError) error = NULL;
gboolean res;
g_return_val_if_fail (GDM_IS_DISPLAY (self), FALSE);
@@ -202,12 +202,10 @@ gdm_display_create_authority (GdmDisplay *self)
priv = gdm_display_get_instance_private (self);
g_return_val_if_fail (priv->access_file == NULL, FALSE);
- error = NULL;
access_file = _create_access_file_for_user (self, GDM_USERNAME, &error);
if (access_file == NULL) {
g_critical ("could not create display access file: %s", error->message);
- g_error_free (error);
return FALSE;
}
@@ -220,15 +218,12 @@ gdm_display_create_authority (GdmDisplay *self)
&error);
if (! res) {
-
g_critical ("could not add display to access file: %s", error->message);
- g_error_free (error);
gdm_display_access_file_close (access_file);
- g_object_unref (access_file);
return FALSE;
}
- priv->access_file = access_file;
+ priv->access_file = g_steal_pointer (&access_file);
return TRUE;
}
@@ -254,8 +249,8 @@ gdm_display_add_user_authorization (GdmDisplay *self,
GError **error)
{
GdmDisplayPrivate *priv;
- GdmDisplayAccessFile *access_file;
- GError *access_file_error;
+ g_autoptr(GdmDisplayAccessFile) access_file = NULL;
+ g_autoptr(GError) access_file_error = NULL;
gboolean res;
int i;
@@ -280,13 +275,12 @@ gdm_display_add_user_authorization (GdmDisplay *self,
g_debug ("GdmDisplay: Adding user authorization for %s", username);
- access_file_error = NULL;
access_file = _create_access_file_for_user (self,
username,
&access_file_error);
if (access_file == NULL) {
- g_propagate_error (error, access_file_error);
+ g_propagate_error (error, g_steal_pointer (&access_file_error));
return FALSE;
}
@@ -299,14 +293,13 @@ gdm_display_add_user_authorization (GdmDisplay *self,
g_debug ("GdmDisplay: Unable to add user authorization for %s: %s",
username,
access_file_error->message);
- g_propagate_error (error, access_file_error);
+ g_propagate_error (error, g_steal_pointer (&access_file_error));
gdm_display_access_file_close (access_file);
- g_object_unref (access_file);
return FALSE;
}
*filename = gdm_display_access_file_get_path (access_file);
- priv->user_access_file = access_file;
+ priv->user_access_file = g_steal_pointer (&access_file);
g_debug ("GdmDisplay: Added user authorization for %s: %s", username, *filename);
/* Remove access for the programs run by greeter now that the
@@ -1080,13 +1073,12 @@ handle_get_id (GdmDBusDisplay *skeleton,
GDBusMethodInvocation *invocation,
GdmDisplay *self)
{
- char *id;
+ g_autofree char *id = NULL;
gdm_display_get_id (self, &id, NULL);
gdm_dbus_display_complete_get_id (skeleton, invocation, id);
- g_free (id);
return TRUE;
}
@@ -1095,7 +1087,7 @@ handle_get_remote_hostname (GdmDBusDisplay *skeleton,
GDBusMethodInvocation *invocation,
GdmDisplay *self)
{
- char *hostname;
+ g_autofree char *hostname = NULL;
gdm_display_get_remote_hostname (self, &hostname, NULL);
@@ -1103,7 +1095,6 @@ handle_get_remote_hostname (GdmDBusDisplay *skeleton,
invocation,
hostname ? hostname : "");
- g_free (hostname);
return TRUE;
}
@@ -1112,9 +1103,8 @@ handle_get_seat_id (GdmDBusDisplay *skeleton,
GDBusMethodInvocation *invocation,
GdmDisplay *self)
{
- char *seat_id;
+ g_autofree char *seat_id = NULL;
- seat_id = NULL;
gdm_display_get_seat_id (self, &seat_id, NULL);
if (seat_id == NULL) {
@@ -1122,7 +1112,6 @@ handle_get_seat_id (GdmDBusDisplay *skeleton,
}
gdm_dbus_display_complete_get_seat_id (skeleton, invocation, seat_id);
- g_free (seat_id);
return TRUE;
}
@@ -1131,13 +1120,12 @@ handle_get_x11_display_name (GdmDBusDisplay *skeleton,
GDBusMethodInvocation *invocation,
GdmDisplay *self)
{
- char *name;
+ g_autofree char *name = NULL;
gdm_display_get_x11_display_name (self, &name, NULL);
gdm_dbus_display_complete_get_x11_display_name (skeleton, invocation, name);
- g_free (name);
return TRUE;
}
@@ -1173,15 +1161,13 @@ static gboolean
register_display (GdmDisplay *self)
{
GdmDisplayPrivate *priv;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
priv = gdm_display_get_instance_private (self);
- error = NULL;
priv->connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (priv->connection == NULL) {
g_critical ("error getting system bus: %s", error->message);
- g_error_free (error);
exit (EXIT_FAILURE);
}
@@ -1485,12 +1471,11 @@ static void
on_launch_environment_session_opened (GdmLaunchEnvironment *launch_environment,
GdmDisplay *self)
{
- char *session_id;
+ g_autofree char *session_id = NULL;
g_debug ("GdmDisplay: Greeter session opened");
session_id = gdm_launch_environment_get_session_id (launch_environment);
_gdm_display_set_session_id (self, session_id);
- g_free (session_id);
}
static void
@@ -1543,14 +1528,12 @@ on_launch_environment_session_died (GdmLaunchEnvironment *launch_environment,
static gboolean
can_create_environment (const char *session_id)
{
- char *path;
+ g_autofree char *path = NULL;
gboolean session_exists;
path = g_strdup_printf (GNOME_SESSION_SESSIONS_PATH "/%s.session", session_id);
session_exists = g_file_test (path, G_FILE_TEST_EXISTS);
- g_free (path);
-
return session_exists;
}
@@ -1570,9 +1553,9 @@ kernel_cmdline_initial_setup_argument (const gchar *contents,
gchar **initial_setup_argument,
GError **error)
{
- GRegex *regex = NULL;
- GMatchInfo *match_info = NULL;
- gchar *match_group = NULL;
+ g_autoptr(GRegex) regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autofree gchar *match_group = NULL;
g_return_val_if_fail (initial_setup_argument != NULL, FALSE);
@@ -1582,9 +1565,6 @@ kernel_cmdline_initial_setup_argument (const gchar *contents,
return FALSE;
if (!g_regex_match (regex, contents, 0, &match_info)) {
- g_free (match_info);
- g_free (regex);
-
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Could not match gnome.initial-setup= in kernel cmdline");
@@ -1594,19 +1574,13 @@ kernel_cmdline_initial_setup_argument (const gchar *contents,
match_group = g_match_info_fetch (match_info, 1);
if (!match_group) {
- g_free (match_info);
- g_free (regex);
-
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Could not match gnome.initial-setup= in kernel cmdline");
return FALSE;
}
- *initial_setup_argument = match_group;
-
- g_free (match_info);
- g_free (regex);
+ *initial_setup_argument = g_steal_pointer (&match_group);
return TRUE;
}
@@ -1616,16 +1590,15 @@ kernel_cmdline_initial_setup_argument (const gchar *contents,
static gboolean
kernel_cmdline_initial_setup_force_state (gboolean *force_state)
{
- GError *error = NULL;
- gchar *contents = NULL;
- gchar *setup_argument = NULL;
+ g_autoptr(GError) error = NULL;
+ g_autofree gchar *contents = NULL;
+ g_autofree gchar *setup_argument = NULL;
g_return_val_if_fail (force_state != NULL, FALSE);
if (!g_file_get_contents ("/proc/cmdline", &contents, NULL, &error)) {
g_debug ("GdmDisplay: Could not check kernel parameters, not forcing initial setup: %s",
error->message);
- g_clear_error (&error);
return FALSE;
}
@@ -1633,16 +1606,12 @@ kernel_cmdline_initial_setup_force_state (gboolean *force_state)
if (!kernel_cmdline_initial_setup_argument (contents, &setup_argument, &error)) {
g_debug ("GdmDisplay: Failed to read kernel commandline: %s", error->message);
- g_clear_pointer (&contents, g_free);
return FALSE;
}
- g_clear_pointer (&contents, g_free);
-
/* Poor-man's check for truthy or falsey values */
*force_state = setup_argument[0] == '1';
- g_free (setup_argument);
return TRUE;
}
@@ -1697,10 +1666,10 @@ gdm_display_start_greeter_session (GdmDisplay *self)
{
GdmDisplayPrivate *priv;
GdmSession *session;
- char *display_name;
- char *seat_id;
- char *hostname;
- char *auth_file = NULL;
+ g_autofree char *display_name = NULL;
+ g_autofree char *seat_id = NULL;
+ g_autofree char *hostname = NULL;
+ g_autofree char *auth_file = NULL;
g_return_if_fail (GDM_IS_DISPLAY (self));
@@ -1709,10 +1678,6 @@ gdm_display_start_greeter_session (GdmDisplay *self)
g_debug ("GdmDisplay: Running greeter");
- display_name = NULL;
- seat_id = NULL;
- hostname = NULL;
-
g_object_get (self,
"x11-display-name", &display_name,
"seat-id", &seat_id,
@@ -1758,11 +1723,6 @@ gdm_display_start_greeter_session (GdmDisplay *self)
"display-is-initial", priv->is_initial,
"supported-session-types", priv->supported_session_types,
NULL);
-
- g_free (display_name);
- g_free (seat_id);
- g_free (hostname);
- g_free (auth_file);
}
void
diff --git a/daemon/gdm-launch-environment.c b/daemon/gdm-launch-environment.c
index 507d6de7..91dd396e 100644
--- a/daemon/gdm-launch-environment.c
+++ b/daemon/gdm-launch-environment.c
@@ -160,7 +160,7 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment,
"XDG_CONFIG_DIRS",
NULL
};
- char *system_data_dirs;
+ g_autofree char *system_data_dirs = NULL;
g_auto (GStrv) supported_session_types = NULL;
int i;
@@ -244,7 +244,6 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment,
DATADIR "/gdm/greeter",
DATADIR,
system_data_dirs));
- g_free (system_data_dirs);
g_object_get (launch_environment->session,
"supported-session-types",
@@ -262,7 +261,7 @@ on_session_setup_complete (GdmSession *session,
const char *service_name,
GdmLaunchEnvironment *launch_environment)
{
- GHashTable *hash;
+ g_autoptr(GHashTable) hash = NULL;
GHashTableIter iter;
gpointer key, value;
@@ -272,7 +271,6 @@ on_session_setup_complete (GdmSession *session,
while (g_hash_table_iter_next (&iter, &key, &value)) {
gdm_session_set_environment_variable (launch_environment->session, key, value);
}
- g_hash_table_destroy (hash);
}
static void
@@ -331,8 +329,8 @@ on_conversation_started (GdmSession *session,
const char *service_name,
GdmLaunchEnvironment *launch_environment)
{
- char *log_path;
- char *log_file;
+ g_autofree char *log_path = NULL;
+ g_autofree char *log_file = NULL;
if (launch_environment->x11_display_name != NULL)
log_file = g_strdup_printf ("%s-greeter.log", launch_environment->x11_display_name);
@@ -340,13 +338,11 @@ on_conversation_started (GdmSession *session,
log_file = g_strdup ("greeter.log");
log_path = g_build_filename (LOGDIR, log_file, NULL);
- g_free (log_file);
gdm_session_setup_for_program (launch_environment->session,
"gdm-launch-environment",
launch_environment->user_name,
log_path);
- g_free (log_path);
}
static void
@@ -354,10 +350,9 @@ on_conversation_stopped (GdmSession *session,
const char *service_name,
GdmLaunchEnvironment *launch_environment)
{
- GdmSession *conversation_session;
+ g_autoptr(GdmSession) conversation_session = NULL;
- conversation_session = launch_environment->session;
- launch_environment->session = NULL;
+ conversation_session = g_steal_pointer (&launch_environment->session);
g_debug ("GdmLaunchEnvironment: conversation stopped");
@@ -368,7 +363,6 @@ on_conversation_stopped (GdmSession *session,
if (conversation_session != NULL) {
gdm_session_close (conversation_session);
- g_object_unref (conversation_session);
}
}
@@ -402,9 +396,7 @@ ensure_directory_with_uid_gid (const char *path,
gboolean
gdm_launch_environment_start (GdmLaunchEnvironment *launch_environment)
{
- gboolean res = FALSE;
- GError *local_error = NULL;
- GError **error = &local_error;
+ g_autoptr(GError) error = NULL;
struct passwd *passwd_entry;
uid_t uid;
gid_t gid;
@@ -414,10 +406,8 @@ gdm_launch_environment_start (GdmLaunchEnvironment *launch_environment)
g_debug ("GdmLaunchEnvironment: Starting...");
if (!gdm_get_pwent_for_name (launch_environment->user_name, &passwd_entry)) {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Unknown user %s",
- launch_environment->user_name);
- goto out;
+ g_critical ("GdmLaunchEnvironment: Unknown user %s", launch_environment->user_name);
+ return FALSE;
}
uid = passwd_entry->pw_uid;
@@ -425,13 +415,16 @@ gdm_launch_environment_start (GdmLaunchEnvironment *launch_environment)
g_debug ("GdmLaunchEnvironment: Setting up run time dir %s",
launch_environment->runtime_dir);
- if (!ensure_directory_with_uid_gid (launch_environment->runtime_dir, uid, gid, error)) {
- goto out;
+ if (!ensure_directory_with_uid_gid (launch_environment->runtime_dir, uid, gid, &error)) {
+ g_critical ("GdmLaunchEnvironment: %s", error->message);
+ return FALSE;
}
/* Create the home directory too */
- if (!ensure_directory_with_uid_gid (passwd_entry->pw_dir, uid, gid, error))
- goto out;
+ if (!ensure_directory_with_uid_gid (passwd_entry->pw_dir, uid, gid, &error)) {
+ g_critical ("GdmLaunchEnvironment: %s", error->message);
+ return FALSE;
+ }
launch_environment->session = gdm_session_new (launch_environment->verification_mode,
uid,
@@ -494,13 +487,7 @@ gdm_launch_environment_start (GdmLaunchEnvironment *launch_environment)
NULL);
}
- res = TRUE;
- out:
- if (local_error) {
- g_critical ("GdmLaunchEnvironment: %s", local_error->message);
- g_clear_error (&local_error);
- }
- return res;
+ return TRUE;
}
gboolean
@@ -916,8 +903,6 @@ gdm_launch_environment_finalize (GObject *object)
launch_environment = GDM_LAUNCH_ENVIRONMENT (object);
- g_return_if_fail (launch_environment != NULL);
-
gdm_launch_environment_stop (launch_environment);
if (launch_environment->session) {
@@ -949,10 +934,10 @@ create_gnome_session_environment (const char *session_id,
gboolean display_is_local)
{
gboolean debug = FALSE;
- char *command;
GdmLaunchEnvironment *launch_environment;
- char **argv;
- GPtrArray *args;
+ g_autoptr(GPtrArray) args = NULL;
+ g_autofree char **argv = NULL;
+ g_autofree char *command = NULL;
gdm_settings_direct_get_boolean (GDM_KEY_DEBUG, &debug);
@@ -973,9 +958,8 @@ create_gnome_session_environment (const char *session_id,
g_ptr_array_add (args, NULL);
- argv = (char **) g_ptr_array_free (args, FALSE);
+ argv = (char **) g_ptr_array_steal (args, NULL);
command = g_strjoinv (" ", argv);
- g_free (argv);
launch_environment = g_object_new (GDM_TYPE_LAUNCH_ENVIRONMENT,
"command", command,
@@ -989,7 +973,6 @@ create_gnome_session_environment (const char *session_id,
"runtime-dir", GDM_SCREENSHOT_DIR,
NULL);
- g_free (command);
return launch_environment;
}
diff --git a/daemon/gdm-legacy-display.c b/daemon/gdm-legacy-display.c
index e53d82b2..9301d9fd 100644
--- a/daemon/gdm-legacy-display.c
+++ b/daemon/gdm-legacy-display.c
@@ -93,14 +93,11 @@ static gboolean
gdm_legacy_display_prepare (GdmDisplay *display)
{
GdmLegacyDisplay *self = GDM_LEGACY_DISPLAY (display);
- GdmLaunchEnvironment *launch_environment;
- char *display_name;
- char *seat_id;
+ g_autoptr(GdmLaunchEnvironment) launch_environment = NULL;
+ g_autofree char *display_name = NULL;
+ g_autofree gchar *seat_id = NULL;
gboolean doing_initial_setup = FALSE;
- display_name = NULL;
- seat_id = NULL;
-
g_object_get (self,
"x11-display-name", &display_name,
"seat-id", &seat_id,
@@ -122,7 +119,6 @@ gdm_legacy_display_prepare (GdmDisplay *display)
}
g_object_set (self, "launch-environment", launch_environment, NULL);
- g_object_unref (launch_environment);
if (!gdm_display_create_authority (display)) {
g_warning ("Unable to set up access control for display %s",
@@ -145,8 +141,8 @@ on_server_ready (GdmServer *server,
g_debug ("GdmDisplay: could not connect to display");
gdm_display_unmanage (GDM_DISPLAY (self));
} else {
- GdmLaunchEnvironment *launch_environment;
- char *display_device;
+ g_autoptr(GdmLaunchEnvironment) launch_environment = NULL;
+ g_autofree char *display_device = NULL;
display_device = gdm_server_get_display_device (server);
@@ -157,8 +153,6 @@ on_server_ready (GdmServer *server,
"x11-display-device",
display_device,
NULL);
- g_clear_pointer(&display_device, g_free);
- g_clear_object (&launch_environment);
g_debug ("GdmDisplay: connected to display");
g_object_set (G_OBJECT (self), "status", GDM_DISPLAY_MANAGED, NULL);
@@ -191,9 +185,9 @@ static void
gdm_legacy_display_manage (GdmDisplay *display)
{
GdmLegacyDisplay *self = GDM_LEGACY_DISPLAY (display);
- char *display_name;
- char *auth_file;
- char *seat_id;
+ g_autofree char *display_name = NULL;
+ g_autofree char *auth_file = NULL;
+ g_autofree char *seat_id = NULL;
gboolean is_initial;
gboolean res;
gboolean disable_tcp;
@@ -207,10 +201,6 @@ gdm_legacy_display_manage (GdmDisplay *display)
self->server = gdm_server_new (display_name, seat_id, auth_file, is_initial);
- g_free (display_name);
- g_free (auth_file);
- g_free (seat_id);
-
disable_tcp = TRUE;
if (gdm_settings_direct_get_boolean (GDM_KEY_DISALLOW_TCP, &disable_tcp)) {
g_object_set (self->server,
@@ -290,14 +280,13 @@ GdmDisplay *
gdm_legacy_display_new (int display_number)
{
GObject *object;
- char *x11_display;
+ g_autofree char *x11_display = NULL;
x11_display = g_strdup_printf (":%d", display_number);
object = g_object_new (GDM_TYPE_LEGACY_DISPLAY,
"x11-display-number", display_number,
"x11-display-name", x11_display,
NULL);
- g_free (x11_display);
return GDM_DISPLAY (object);
}
diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c
index 471e1b46..0b7e8928 100644
--- a/daemon/gdm-local-display-factory.c
+++ b/daemon/gdm-local-display-factory.c
@@ -1142,18 +1142,18 @@ on_vt_changed (GIOChannel *source,
GdmLocalDisplayFactory *factory)
{
GdmDisplayStore *store;
- GIOStatus status;
g_autofree char *tty_of_active_vt = NULL;
g_autofree char *login_session_id = NULL;
- g_autofree char *active_session_id = NULL;
unsigned int previous_vt, new_vt, login_window_vt = 0;
- int ret, n_returned;
+ int n_returned;
g_debug ("GdmLocalDisplayFactory: received VT change event");
g_io_channel_seek_position (source, 0, G_SEEK_SET, NULL);
if (condition & G_IO_PRI) {
g_autoptr (GError) error = NULL;
+ GIOStatus status;
+
status = g_io_channel_read_line (source, &tty_of_active_vt, NULL, NULL, &error);
if (error != NULL) {
@@ -1216,7 +1216,7 @@ on_vt_changed (GIOChannel *source,
/* if the old VT was running a wayland login screen kill it
*/
if (gdm_get_login_window_session_id ("seat0", &login_session_id)) {
- ret = sd_session_get_vt (login_session_id, &login_window_vt);
+ int ret = sd_session_get_vt (login_session_id, &login_window_vt);
if (ret == 0 && login_window_vt != 0) {
g_debug ("GdmLocalDisplayFactory: VT of login window is %u", login_window_vt);
if (login_window_vt == previous_vt) {
diff --git a/daemon/gdm-local-display.c b/daemon/gdm-local-display.c
index 69945d95..8d90a20a 100644
--- a/daemon/gdm-local-display.c
+++ b/daemon/gdm-local-display.c
@@ -93,7 +93,6 @@ gdm_local_display_prepare (GdmDisplay *display)
char *session_class;
char *session_type;
gboolean doing_initial_setup = FALSE;
- gboolean failed = FALSE;
seat_id = NULL;
@@ -132,9 +131,6 @@ out:
g_free (session_class);
g_free (session_type);
- if (failed) {
- return FALSE;
- }
return GDM_DISPLAY_CLASS (gdm_local_display_parent_class)->prepare (display);
}
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
index 7f44eb48..8611e2ed 100644
--- a/daemon/gdm-manager.c
+++ b/daemon/gdm-manager.c
@@ -979,7 +979,7 @@ on_reauthentication_client_rejected (GdmSession *session,
if (pid != pid_of_client) {
const char *session_id;
- char *client_session_id;
+ g_autofree char *client_session_id = NULL;
/* rejected client isn't the process that started the
* transient reauthentication session. If it's not even from the
@@ -1506,7 +1506,7 @@ on_display_status_changed (GdmDisplay *display,
{
int status;
int display_number = -1;
- char *session_type = NULL;
+ g_autofree char *session_type = NULL;
gboolean doing_initial_setup = FALSE;
#ifdef WITH_PLYMOUTH
gboolean display_is_local = FALSE;
@@ -1531,14 +1531,13 @@ on_display_status_changed (GdmDisplay *display,
case GDM_DISPLAY_MANAGED:
if ((display_number == -1 && status == GDM_DISPLAY_PREPARED) ||
(display_number != -1 && status == GDM_DISPLAY_MANAGED)) {
- char *session_class;
+ g_autofree char *session_class = NULL;
g_object_get (display,
"session-class", &session_class,
NULL);
if (g_strcmp0 (session_class, "greeter") == 0)
set_up_session (manager, display);
- g_free (session_class);
}
break;
case GDM_DISPLAY_FAILED:
@@ -1609,14 +1608,14 @@ start_user_session (GdmManager *manager,
display = get_display_for_user_session (operation->session);
if (display != NULL) {
- char *auth_file;
- const char *username;
gboolean is_connected = FALSE;
g_object_get (G_OBJECT (display), "is-connected", &is_connected, NULL);
if (is_connected) {
- auth_file = NULL;
+ char *auth_file = NULL;
+ const char *username;
+
username = gdm_session_get_username (operation->session);
gdm_display_add_user_authorization (display,
username,
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c
index ebd0a78b..e9ed14ca 100644
--- a/daemon/gdm-server.c
+++ b/daemon/gdm-server.c
@@ -428,15 +428,9 @@ gdm_server_setup_journal_fds (GdmServer *server)
#ifdef ENABLE_SYSTEMD_JOURNAL
if (sd_booted () > 0) {
int out, err;
- const char *prefix = "gdm-Xorg-";
- char *identifier;
- gsize size;
+ g_autofree char *identifier = NULL;
- size = strlen (prefix) + strlen (server->display_name) + 1;
- identifier = g_alloca (size);
- strcpy (identifier, prefix);
- strcat (identifier, server->display_name);
- identifier[size - 1] = '\0';
+ identifier = g_strdup_printf("gdm-Xorg-%s", server->display_name);
out = sd_journal_stream_fd (identifier, LOG_INFO, FALSE);
if (out < 0)
@@ -816,8 +810,7 @@ gdm_server_stop (GdmServer *server)
g_debug ("GdmServer: Stopping server");
res = gdm_signal_pid (server->pid, SIGTERM);
- if (res < 0) {
- } else {
+ if (res >= 0) {
server_died (server);
}
diff --git a/daemon/gdm-session-linux-auditor.c b/daemon/gdm-session-linux-auditor.c
index 0390adea..6b2e554d 100644
--- a/daemon/gdm-session-linux-auditor.c
+++ b/daemon/gdm-session-linux-auditor.c
@@ -54,9 +54,9 @@ log_user_message (GdmSessionAuditor *auditor,
{
GdmSessionLinuxAuditor *linux_auditor;
char buf[512];
- char *username;
- char *hostname;
- char *display_device;
+ g_autofree char *username = NULL;
+ g_autofree char *hostname = NULL;
+ g_autofree char *display_device = NULL;
struct passwd *pw;
linux_auditor = GDM_SESSION_LINUX_AUDITOR (auditor);
@@ -83,10 +83,6 @@ log_user_message (GdmSessionAuditor *auditor,
buf, hostname, NULL, display_device,
result);
}
-
- g_free (username);
- g_free (hostname);
- g_free (display_device);
}
static void
diff --git a/daemon/gdm-session-record.c b/daemon/gdm-session-record.c
index ca2fc2bc..f913dee3 100644
--- a/daemon/gdm-session-record.c
+++ b/daemon/gdm-session-record.c
@@ -114,11 +114,9 @@ record_set_host (UTMP *u,
const char *x11_display_name,
const char *host_name)
{
- char *hostname;
+ g_autofree char *hostname = NULL;
#if defined(HAVE_UT_UT_HOST)
- hostname = NULL;
-
/*
* Set ut_host to hostname:$DISPLAY if remote, otherwise set
* to $DISPLAY
@@ -137,7 +135,6 @@ record_set_host (UTMP *u,
#ifdef HAVE_UT_UT_SYSLEN
u->ut_syslen = MIN (strlen (hostname), sizeof (u->ut_host));
#endif
- g_free (hostname);
}
#endif
}
diff --git a/daemon/gdm-session-settings.c b/daemon/gdm-session-settings.c
index baa08f5f..8a09381c 100644
--- a/daemon/gdm-session-settings.c
+++ b/daemon/gdm-session-settings.c
@@ -338,27 +338,19 @@ gboolean
gdm_session_settings_load (GdmSessionSettings *settings,
const char *username)
{
- ActUser *old_user;
-
g_return_val_if_fail (GDM_IS_SESSION_SETTINGS (settings), FALSE);
g_return_val_if_fail (username != NULL, FALSE);
g_return_val_if_fail (!gdm_session_settings_is_loaded (settings), FALSE);
if (settings->user != NULL) {
- old_user = settings->user;
-
g_signal_handlers_disconnect_by_func (G_OBJECT (settings->user),
G_CALLBACK (on_user_is_loaded_changed),
settings);
- } else {
- old_user = NULL;
}
settings->user = act_user_manager_get_user (settings->user_manager,
username);
- g_clear_object (&old_user);
-
if (!act_user_is_loaded (settings->user)) {
g_signal_connect (settings->user,
"notify::is-loaded",
@@ -376,7 +368,7 @@ gboolean
gdm_session_settings_save (GdmSessionSettings *settings,
const char *username)
{
- ActUser *user;
+ g_autoptr(ActUser) user = NULL;
g_return_val_if_fail (GDM_IS_SESSION_SETTINGS (settings), FALSE);
g_return_val_if_fail (username != NULL, FALSE);
@@ -387,7 +379,6 @@ gdm_session_settings_save (GdmSessionSettings *settings,
if (!act_user_is_loaded (user)) {
- g_object_unref (user);
return FALSE;
}
@@ -410,12 +401,10 @@ gdm_session_settings_save (GdmSessionSettings *settings,
if (error != NULL) {
g_debug ("GdmSessionSettings: Could not locally cache remote user: %s", error->message);
- g_object_unref (user);
return FALSE;
}
}
- g_object_unref (user);
return TRUE;
}
diff --git a/daemon/gdm-session-worker-job.c b/daemon/gdm-session-worker-job.c
index 27878c02..7466d1fc 100644
--- a/daemon/gdm-session-worker-job.c
+++ b/daemon/gdm-session-worker-job.c
@@ -172,7 +172,7 @@ static void
copy_environment_to_hash (GdmSessionWorkerJob *job,
GHashTable *hash)
{
- char **environment;
+ g_auto(GStrv) environment = NULL;
gint i;
if (job->environment != NULL) {
@@ -182,58 +182,50 @@ copy_environment_to_hash (GdmSessionWorkerJob *job,
}
for (i = 0; environment[i]; i++) {
- char **parts;
+ g_auto(GStrv) parts = NULL;
parts = g_strsplit (environment[i], "=", 2);
if (parts[0] != NULL && parts[1] != NULL) {
g_hash_table_insert (hash, g_strdup (parts[0]), g_strdup (parts[1]));
}
-
- g_strfreev (parts);
}
-
- g_strfreev (environment);
}
static GPtrArray *
get_job_arguments (GdmSessionWorkerJob *job,
const char *name)
{
- GPtrArray *args;
- GError *error;
- char **argv;
+ g_autoptr(GPtrArray) args = NULL;
+ g_autoptr(GError) error = NULL;
+ g_auto(GStrv) argv = NULL;
int i;
args = NULL;
- argv = NULL;
- error = NULL;
if (!g_shell_parse_argv (job->command, NULL, &argv, &error)) {
g_warning ("Could not parse command: %s", error->message);
- g_error_free (error);
- goto out;
+ return NULL;
}
- args = g_ptr_array_new ();
+ args = g_ptr_array_new_with_free_func (g_free);
g_ptr_array_add (args, g_strdup (argv[0]));
g_ptr_array_add (args, g_strdup (name));
for (i = 1; argv[i] != NULL; i++) {
g_ptr_array_add (args, g_strdup (argv[i]));
}
- g_strfreev (argv);
g_ptr_array_add (args, NULL);
-out:
- return args;
+
+ return g_steal_pointer (&args);
}
static GPtrArray *
get_job_environment (GdmSessionWorkerJob *job)
{
- GPtrArray *env;
- GHashTable *hash;
+ g_autoptr(GPtrArray) env = NULL;
+ g_autoptr(GHashTable) hash = NULL;
- env = g_ptr_array_new ();
+ env = g_ptr_array_new_with_free_func (g_free);
/* create a hash table of current environment, then update keys has necessary */
hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
@@ -246,21 +238,20 @@ get_job_environment (GdmSessionWorkerJob *job)
}
g_hash_table_foreach (hash, (GHFunc)listify_hash, env);
- g_hash_table_destroy (hash);
g_ptr_array_add (env, NULL);
- return env;
+ return g_steal_pointer (&env);
}
static gboolean
gdm_session_worker_job_spawn (GdmSessionWorkerJob *session_worker_job,
const char *name)
{
- GError *error;
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GPtrArray) args = NULL;
+ g_autoptr(GPtrArray) env = NULL;
gboolean ret;
- GPtrArray *args;
- GPtrArray *env;
g_debug ("GdmSessionWorkerJob: Running session_worker_job process: %s %s",
name != NULL? name : "", session_worker_job->command);
@@ -272,7 +263,6 @@ gdm_session_worker_job_spawn (GdmSessionWorkerJob *session_worker_job,
}
env = get_job_environment (session_worker_job);
- error = NULL;
ret = g_spawn_async_with_pipes (NULL,
(char **) args->pdata,
(char **)env->pdata,
@@ -285,17 +275,10 @@ gdm_session_worker_job_spawn (GdmSessionWorkerJob *session_worker_job,
NULL,
&error);
- g_ptr_array_foreach (args, (GFunc)g_free, NULL);
- g_ptr_array_free (args, TRUE);
-
- g_ptr_array_foreach (env, (GFunc)g_free, NULL);
- g_ptr_array_free (env, TRUE);
-
if (! ret) {
g_warning ("Could not start command '%s': %s",
session_worker_job->command,
error->message);
- g_error_free (error);
} else {
g_debug ("GdmSessionWorkerJob: : SessionWorkerJob on pid %d", (int)session_worker_job->pid);
}
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index b062fdd7..13e259c3 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -439,10 +439,9 @@ attempt_to_load_user_settings (GdmSessionWorker *worker,
static void
gdm_session_worker_update_username (GdmSessionWorker *worker)
{
- char *username;
+ g_autofree char *username = NULL;
gboolean res;
- username = NULL;
res = gdm_session_worker_get_username (worker, &username);
if (res) {
g_debug ("GdmSessionWorker: old-username='%s' new-username='%s'",
@@ -455,13 +454,12 @@ gdm_session_worker_update_username (GdmSessionWorker *worker)
if ((worker->username == username) ||
((worker->username != NULL) && (username != NULL) &&
(strcmp (worker->username, username) == 0)))
- goto out;
+ return;
g_debug ("GdmSessionWorker: setting username to '%s'", username);
g_free (worker->username);
- worker->username = username;
- username = NULL;
+ worker->username = g_steal_pointer (&username);
gdm_dbus_worker_emit_username_changed (GDM_DBUS_WORKER (worker),
worker->username);
@@ -476,9 +474,6 @@ gdm_session_worker_update_username (GdmSessionWorker *worker)
attempt_to_load_user_settings (worker, worker->username);
}
}
-
- out:
- g_free (username);
}
static gboolean
@@ -536,9 +531,9 @@ gdm_session_worker_ask_list_of_choices (GdmSessionWorker *worker,
GdmChoiceList *list,
char **answerp)
{
+ g_autoptr(GVariant) choices_as_variant = NULL;
+ g_autoptr(GError) error = NULL;
GVariantBuilder builder;
- GVariant *choices_as_variant;
- GError *error = NULL;
gboolean res;
size_t i;
@@ -569,7 +564,6 @@ gdm_session_worker_ask_list_of_choices (GdmSessionWorker *worker,
if (! res) {
g_debug ("GdmSessionWorker: list request failed: %s", error->message);
- g_clear_error (&error);
} else {
g_debug ("GdmSessionWorker: user selected '%s'", *answerp);
}
@@ -635,7 +629,7 @@ gdm_session_worker_process_extended_pam_message (GdmSessionWorker *work
static char *
convert_to_utf8 (const char *str)
{
- char *utf8;
+ g_autofree char *utf8 = NULL;
utf8 = g_locale_to_utf8 (str,
-1,
NULL,
@@ -657,7 +651,7 @@ convert_to_utf8 (const char *str)
}
}
- return utf8;
+ return g_steal_pointer (&utf8);
}
static gboolean
@@ -665,10 +659,10 @@ gdm_session_worker_process_pam_message (GdmSessionWorker *worker,
const struct pam_message *query,
char **response)
{
- char *user_answer;
+ g_autofree char *user_answer = NULL;
+ g_autofree char *utf8_msg = NULL;
+ g_autofree char *msg = NULL;
gboolean res;
- char *utf8_msg;
- char *msg;
if (response != NULL) {
*response = NULL;
@@ -689,7 +683,6 @@ gdm_session_worker_process_pam_message (GdmSessionWorker *worker,
worker->cancelled = FALSE;
worker->timed_out = FALSE;
- user_answer = NULL;
switch (query->msg_style) {
case PAM_PROMPT_ECHO_ON:
res = gdm_session_worker_ask_question (worker, utf8_msg, &user_answer);
@@ -707,7 +700,6 @@ gdm_session_worker_process_pam_message (GdmSessionWorker *worker,
case PAM_RADIO_TYPE:
msg = g_strdup_printf ("%s (yes/no)", utf8_msg);
res = gdm_session_worker_ask_question (worker, msg, &user_answer);
- g_free (msg);
break;
#endif
default:
@@ -733,15 +725,12 @@ gdm_session_worker_process_pam_message (GdmSessionWorker *worker,
}
memset (user_answer, '\0', strlen (user_answer));
- g_free (user_answer);
g_debug ("GdmSessionWorker: trying to get updated username");
res = TRUE;
}
- g_free (utf8_msg);
-
return res;
}
@@ -1385,8 +1374,8 @@ gdm_session_worker_set_environment_variable (GdmSessionWorker *worker,
const char *key,
const char *value)
{
+ g_autofree char *environment_entry = NULL;
int error_code;
- char *environment_entry;
if (value != NULL) {
environment_entry = g_strdup_printf ("%s=%s", key, value);
@@ -1404,7 +1393,6 @@ gdm_session_worker_set_environment_variable (GdmSessionWorker *worker,
pam_strerror (worker->pam_handle, error_code));
}
g_debug ("GdmSessionWorker: Set PAM environment variable: '%s'", environment_entry);
- g_free (environment_entry);
}
static char *
@@ -1575,19 +1563,16 @@ static gboolean
gdm_session_worker_accredit_user (GdmSessionWorker *worker,
GError **error)
{
+ g_autofree char *shell = NULL;
+ g_autofree char *home = NULL;
gboolean ret;
gboolean res;
uid_t uid;
gid_t gid;
- char *shell;
- char *home;
int error_code;
ret = FALSE;
- home = NULL;
- shell = NULL;
-
if (worker->username == NULL) {
g_debug ("GdmSessionWorker: Username not set");
error_code = PAM_USER_UNKNOWN;
@@ -1664,8 +1649,6 @@ gdm_session_worker_accredit_user (GdmSessionWorker *worker,
ret = TRUE;
out:
- g_free (home);
- g_free (shell);
if (ret) {
g_debug ("GdmSessionWorker: state ACCREDITED");
ret = TRUE;
@@ -1828,8 +1811,8 @@ rotate_logs (const char *path,
int i;
for (i = n_copies - 1; i > 0; i--) {
- char *name_n;
- char *name_n1;
+ g_autofree char *name_n = NULL;
+ g_autofree char *name_n1 = NULL;
name_n = g_strdup_printf ("%s.%d", path, i);
if (i > 1) {
@@ -1840,9 +1823,6 @@ rotate_logs (const char *path,
g_unlink (name_n);
g_rename (name_n1, name_n);
-
- g_free (name_n1);
- g_free (name_n);
}
g_unlink (path);
@@ -1858,20 +1838,18 @@ _open_program_session_log (const char *filename)
fd = g_open (filename, O_WRONLY | O_APPEND | O_CREAT, 0600);
if (fd < 0) {
- char *temp_name;
+ g_autofree char *temp_name = NULL;
temp_name = g_strdup_printf ("%s.XXXXXXXX", filename);
fd = g_mkstemp (temp_name);
if (fd < 0) {
- g_free (temp_name);
goto out;
}
g_warning ("session log '%s' is not appendable, logging session to '%s' instead.\n", filename,
temp_name);
- g_free (temp_name);
} else {
if (ftruncate (fd, 0) < 0) {
close (fd);
@@ -1900,36 +1878,32 @@ static int
_open_user_session_log (const char *dir)
{
int fd;
- char *filename;
+ g_autofree char *filename = NULL;
filename = g_build_filename (dir, GDM_SESSION_LOG_FILENAME, NULL);
if (g_access (dir, R_OK | W_OK | X_OK) == 0 && _is_loggable_file (filename)) {
- char *filename_old;
+ g_autofree char *filename_old = NULL;
filename_old = g_strdup_printf ("%s.old", filename);
g_rename (filename, filename_old);
- g_free (filename_old);
}
fd = g_open (filename, O_RDWR | O_APPEND | O_CREAT, 0600);
if (fd < 0) {
- char *temp_name;
+ g_autofree char *temp_name = NULL;
temp_name = g_strdup_printf ("%s.XXXXXXXX", filename);
fd = g_mkstemp (temp_name);
if (fd < 0) {
- g_free (temp_name);
goto out;
}
g_warning ("session log '%s' is not appendable, logging session to '%s' instead.\n", filename,
temp_name);
- g_free (filename);
- filename = temp_name;
} else {
if (ftruncate (fd, 0) < 0) {
close (fd);
@@ -1944,10 +1918,7 @@ _open_user_session_log (const char *dir)
goto out;
}
-
out:
- g_free (filename);
-
if (fd < 0) {
g_warning ("unable to log session");
fd = g_open ("/dev/null", O_RDWR);
@@ -2014,8 +1985,8 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
}
if (session_pid == 0) {
+ g_autofree char *home_dir = NULL;
const char * const * environment;
- char *home_dir;
int stdin_fd = -1, stdout_fd = -1, stderr_fd = -1;
gboolean has_journald = FALSE, needs_controlling_terminal = FALSE;
/* Leak the TTY into the session as stdin so that it stays open
@@ -2093,8 +2064,8 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
#endif
if (!has_journald && !worker->is_program_session) {
if (home_dir != NULL && home_dir[0] != '\0') {
- char *cache_dir;
- char *log_dir;
+ g_autofree char *cache_dir = NULL;
+ g_autofree char *log_dir = NULL;
cache_dir = gdm_session_worker_get_environment_variable (worker, "XDG_CACHE_HOME");
if (cache_dir == NULL || cache_dir[0] == '\0') {
@@ -2102,7 +2073,6 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
}
log_dir = g_build_filename (cache_dir, "gdm", NULL);
- g_free (cache_dir);
if (g_mkdir_with_parents (log_dir, S_IRWXU) == 0) {
stdout_fd = _open_user_session_log (log_dir);
@@ -2111,13 +2081,11 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
stdout_fd = open ("/dev/null", O_RDWR);
stderr_fd = dup (stdout_fd);
}
- g_free (log_dir);
} else {
stdout_fd = open ("/dev/null", O_RDWR);
stderr_fd = dup (stdout_fd);
}
}
- g_free (home_dir);
if (stdout_fd != -1) {
dup2 (stdout_fd, STDOUT_FILENO);
@@ -2290,31 +2258,31 @@ set_up_for_current_vt (GdmSessionWorker *worker,
#ifdef PAM_XAUTHDATA
struct pam_xauth_data *pam_xauth;
#endif
- int error_code = PAM_SUCCESS;
- char *pam_tty;
+ g_autofree char *pam_tty = NULL;
/* set TTY */
pam_tty = _get_tty_for_pam (worker->x11_display_name, worker->display_device);
if (pam_tty != NULL && pam_tty[0] != '\0') {
- error_code = pam_set_item (worker->pam_handle, PAM_TTY, pam_tty);
+ int error_code;
+ error_code = pam_set_item (worker->pam_handle, PAM_TTY, pam_tty);
if (error_code != PAM_SUCCESS) {
g_debug ("error informing authentication system of user's console %s: %s",
pam_tty,
pam_strerror (worker->pam_handle, error_code));
- g_free (pam_tty);
g_set_error_literal (error,
GDM_SESSION_WORKER_ERROR,
GDM_SESSION_WORKER_ERROR_AUTHENTICATING,
"");
- goto out;
+ return FALSE;
}
}
- g_free (pam_tty);
#ifdef PAM_XDISPLAY
/* set XDISPLAY */
if (worker->x11_display_name != NULL && worker->x11_display_name[0] != '\0') {
+ int error_code;
+
error_code = pam_set_item (worker->pam_handle, PAM_XDISPLAY, worker->x11_display_name);
if (error_code != PAM_SUCCESS) {
g_debug ("error informing authentication system of display string %s: %s",
@@ -2324,7 +2292,7 @@ set_up_for_current_vt (GdmSessionWorker *worker,
GDM_SESSION_WORKER_ERROR,
GDM_SESSION_WORKER_ERROR_AUTHENTICATING,
"");
- goto out;
+ return FALSE;
}
}
#endif
@@ -2332,6 +2300,8 @@ set_up_for_current_vt (GdmSessionWorker *worker,
/* set XAUTHDATA */
pam_xauth = _get_xauth_for_pam (worker->x11_authority_file);
if (pam_xauth != NULL) {
+ int error_code;
+
error_code = pam_set_item (worker->pam_handle, PAM_XAUTHDATA, pam_xauth);
if (error_code != PAM_SUCCESS) {
g_debug ("error informing authentication system of display string %s: %s",
@@ -2343,7 +2313,7 @@ set_up_for_current_vt (GdmSessionWorker *worker,
GDM_SESSION_WORKER_ERROR,
GDM_SESSION_WORKER_ERROR_AUTHENTICATING,
"");
- goto out;
+ return FALSE;
}
g_free (pam_xauth);
}
@@ -2357,17 +2327,15 @@ set_up_for_current_vt (GdmSessionWorker *worker,
}
return TRUE;
-out:
- return FALSE;
}
static gboolean
gdm_session_worker_open_session (GdmSessionWorker *worker,
GError **error)
{
+ g_autofree char *session_id = NULL;
int error_code;
int flags;
- char *session_id = NULL;
g_assert (worker->state == GDM_SESSION_WORKER_STATE_ACCOUNT_DETAILS_SAVED);
g_assert (geteuid () == 0);
@@ -2413,7 +2381,7 @@ gdm_session_worker_open_session (GdmSessionWorker *worker,
if (session_id != NULL) {
g_free (worker->session_id);
- worker->session_id = session_id;
+ worker->session_id = g_steal_pointer (&session_id);
}
out:
@@ -2548,50 +2516,46 @@ gdm_session_worker_handle_set_language_name (GdmDBusWorker *object,
static void
on_saved_language_name_read (GdmSessionWorker *worker)
{
- char *language_name;
+ g_autofree char *language_name = NULL;
language_name = gdm_session_settings_get_language_name (worker->user_settings);
g_debug ("GdmSessionWorker: Saved language is %s", language_name);
gdm_dbus_worker_emit_saved_language_name_read (GDM_DBUS_WORKER (worker),
language_name);
- g_free (language_name);
}
static void
on_saved_session_name_read (GdmSessionWorker *worker)
{
- char *session_name;
+ g_autofree char *session_name = NULL;
session_name = gdm_session_settings_get_session_name (worker->user_settings);
g_debug ("GdmSessionWorker: Saved session is %s", session_name);
gdm_dbus_worker_emit_saved_session_name_read (GDM_DBUS_WORKER (worker),
session_name);
- g_free (session_name);
}
static void
on_saved_session_type_read (GdmSessionWorker *worker)
{
- char *session_type;
+ g_autofree char *session_type = NULL;
session_type = gdm_session_settings_get_session_type (worker->user_settings);
g_debug ("GdmSessionWorker: Saved session type is %s", session_type);
gdm_dbus_worker_emit_saved_session_type_read (GDM_DBUS_WORKER (worker),
session_type);
- g_free (session_type);
}
static void
do_setup (GdmSessionWorker *worker)
{
- GError *error;
+ g_autoptr(GError) error = NULL;
gboolean res;
- error = NULL;
res = gdm_session_worker_initialize_pam (worker,
worker->service,
(const char **) worker->extensions,
@@ -2607,7 +2571,8 @@ do_setup (GdmSessionWorker *worker)
if (res) {
g_dbus_method_invocation_return_value (worker->pending_invocation, NULL);
} else {
- g_dbus_method_invocation_take_error (worker->pending_invocation, error);
+ g_dbus_method_invocation_take_error (worker->pending_invocation,
+ g_steal_pointer (&error));
}
worker->pending_invocation = NULL;
}
@@ -2615,12 +2580,11 @@ do_setup (GdmSessionWorker *worker)
static void
do_authenticate (GdmSessionWorker *worker)
{
- GError *error;
+ g_autoptr(GError) error = NULL;
gboolean res;
/* find out who the user is and ensure they are who they say they are
*/
- error = NULL;
res = gdm_session_worker_authenticate_user (worker,
worker->password_is_required,
&error);
@@ -2636,7 +2600,8 @@ do_authenticate (GdmSessionWorker *worker)
gdm_dbus_worker_complete_authenticate (GDM_DBUS_WORKER (worker), worker->pending_invocation);
} else {
g_debug ("GdmSessionWorker: Unable to verify user");
- g_dbus_method_invocation_take_error (worker->pending_invocation, error);
+ g_dbus_method_invocation_take_error (worker->pending_invocation,
+ g_steal_pointer (&error));
}
worker->pending_invocation = NULL;
}
@@ -2644,19 +2609,19 @@ do_authenticate (GdmSessionWorker *worker)
static void
do_authorize (GdmSessionWorker *worker)
{
- GError *error;
+ g_autoptr(GError) error = NULL;
gboolean res;
/* make sure the user is allowed to log in to this system
*/
- error = NULL;
res = gdm_session_worker_authorize_user (worker,
worker->password_is_required,
&error);
if (res) {
gdm_dbus_worker_complete_authorize (GDM_DBUS_WORKER (worker), worker->pending_invocation);
} else {
- g_dbus_method_invocation_take_error (worker->pending_invocation, error);
+ g_dbus_method_invocation_take_error (worker->pending_invocation,
+ g_steal_pointer (&error));
}
worker->pending_invocation = NULL;
}
@@ -2664,18 +2629,18 @@ do_authorize (GdmSessionWorker *worker)
static void
do_accredit (GdmSessionWorker *worker)
{
- GError *error;
+ g_autoptr(GError) error = NULL;
gboolean res;
/* get kerberos tickets, setup group lists, etc
*/
- error = NULL;
res = gdm_session_worker_accredit_user (worker, &error);
if (res) {
gdm_dbus_worker_complete_establish_credentials (GDM_DBUS_WORKER (worker), worker->pending_invocation);
} else {
- g_dbus_method_invocation_take_error (worker->pending_invocation, error);
+ g_dbus_method_invocation_take_error (worker->pending_invocation,
+ g_steal_pointer (&error));
}
worker->pending_invocation = NULL;
}
@@ -2756,10 +2721,9 @@ do_save_account_details_when_ready (GdmSessionWorker *worker)
static void
do_open_session (GdmSessionWorker *worker)
{
- GError *error;
+ g_autoptr(GError) error = NULL;
gboolean res;
- error = NULL;
res = gdm_session_worker_open_session (worker, &error);
if (res) {
@@ -2770,7 +2734,8 @@ do_open_session (GdmSessionWorker *worker)
gdm_dbus_worker_complete_open (GDM_DBUS_WORKER (worker), worker->pending_invocation, session_id);
} else {
- g_dbus_method_invocation_take_error (worker->pending_invocation, error);
+ g_dbus_method_invocation_take_error (worker->pending_invocation,
+ g_steal_pointer (&error));
}
worker->pending_invocation = NULL;
}
@@ -2778,17 +2743,17 @@ do_open_session (GdmSessionWorker *worker)
static void
do_start_session (GdmSessionWorker *worker)
{
- GError *error;
+ g_autoptr(GError) error = NULL;
gboolean res;
- error = NULL;
res = gdm_session_worker_start_session (worker, &error);
if (res) {
gdm_dbus_worker_complete_start_program (GDM_DBUS_WORKER (worker),
worker->pending_invocation,
worker->child_pid);
} else {
- g_dbus_method_invocation_take_error (worker->pending_invocation, error);
+ g_dbus_method_invocation_take_error (worker->pending_invocation,
+ g_steal_pointer (&error));
}
worker->pending_invocation = NULL;
}
@@ -2967,11 +2932,11 @@ gdm_session_worker_handle_open (GdmDBusWorker *object,
static char **
filter_extensions (const char * const *extensions)
{
+ g_autoptr(GPtrArray) array = NULL;
+ g_auto(GStrv) filtered_extensions = NULL;
size_t i, j;
- GPtrArray *array = NULL;
- char **filtered_extensions = NULL;
- array = g_ptr_array_new ();
+ array = g_ptr_array_new_with_free_func (g_free);
for (i = 0; extensions[i] != NULL; i++) {
for (j = 0; gdm_supported_pam_extensions[j] != NULL; j++) {
@@ -2985,9 +2950,7 @@ filter_extensions (const char * const *extensions)
filtered_extensions = g_strdupv ((char **) array->pdata);
- g_ptr_array_free (array, TRUE);
-
- return filtered_extensions;
+ return g_steal_pointer (&filtered_extensions);
}
static gboolean
@@ -3214,7 +3177,7 @@ gdm_session_worker_handle_start_program (GdmDBusWorker *object,
const char *text)
{
GdmSessionWorker *worker = GDM_SESSION_WORKER (object);
- GError *parse_error = NULL;
+ g_autoptr(GError) parse_error = NULL;
validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SESSION_STARTED);
if (worker->is_reauth_session) {
@@ -3229,7 +3192,8 @@ gdm_session_worker_handle_start_program (GdmDBusWorker *object,
g_clear_pointer (&worker->arguments, g_strfreev);
if (! g_shell_parse_argv (text, NULL, &worker->arguments, &parse_error)) {
- g_dbus_method_invocation_take_error (invocation, parse_error);
+ g_dbus_method_invocation_take_error (invocation,
+ g_steal_pointer (&parse_error));
return TRUE;
}
@@ -3401,7 +3365,7 @@ gdm_session_worker_constructor (GType type,
GObjectConstructParam *construct_properties)
{
GdmSessionWorker *worker;
- GError *error;
+ g_autoptr(GError) error = NULL;
worker = GDM_SESSION_WORKER (G_OBJECT_CLASS (gdm_session_worker_parent_class)->constructor (type,
n_construct_properties,
@@ -3409,7 +3373,6 @@ gdm_session_worker_constructor (GType type,
g_debug ("GdmSessionWorker: connecting to address: %s", worker->server_address);
- error = NULL;
worker->connection = g_dbus_connection_new_for_address_sync (worker->server_address,
G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT,
NULL,
@@ -3417,8 +3380,6 @@ gdm_session_worker_constructor (GType type,
&error);
if (worker->connection == NULL) {
g_warning ("error opening connection: %s", error->message);
- g_clear_error (&error);
-
exit (EXIT_FAILURE);
}
@@ -3430,8 +3391,6 @@ gdm_session_worker_constructor (GType type,
&error));
if (worker->manager == NULL) {
g_warning ("error creating session proxy: %s", error->message);
- g_clear_error (&error);
-
exit (EXIT_FAILURE);
}
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 4b8ba156..0b438651 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -3187,7 +3187,7 @@ gdm_session_get_display_seat_id (GdmSession *self)
{
g_return_val_if_fail (GDM_IS_SESSION (self), NULL);
- return g_strdup (self->display_seat_id);
+ return self->display_seat_id;
}
const char *