user-accounts: Use g_autoptr/g_autofree

This commit is contained in:
Robert Ancell 2020-11-02 11:09:17 +13:00
parent 2dbab9d4fa
commit c690e921ca
9 changed files with 194 additions and 382 deletions

View file

@ -191,11 +191,10 @@ create_user_done (ActUserManager *manager,
CcAddUserDialog *self)
{
ActUser *user;
GError *error;
g_autoptr(GError) error = NULL;
/* Note that user is returned without an extra reference */
error = NULL;
user = act_user_manager_create_user_finish (manager, res, &error);
if (user == NULL) {
@ -203,7 +202,6 @@ create_user_done (ActUserManager *manager,
g_debug ("Failed to create user: %s", error->message);
if (!g_error_matches (error, ACT_USER_MANAGER_ERROR, ACT_USER_MANAGER_ERROR_PERMISSION_DENIED))
show_error_dialog (self, _("Failed to add account"), error);
g_error_free (error);
gtk_widget_grab_focus (GTK_WIDGET (self->local_name_entry));
} else {
g_debug ("Created user: %s", act_user_get_user_name (user));
@ -311,7 +309,7 @@ static void local_username_is_valid_cb (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(GError) error = NULL;
g_autofree gchar *tip = NULL;
g_autofree gchar *name = NULL;
@ -330,8 +328,6 @@ static void local_username_is_valid_cb (GObject *source_object,
gtk_label_set_label (self->local_username_hint_label, tip);
dialog_validate (self);
}
g_object_unref (self);
}
static gboolean
@ -412,17 +408,23 @@ generate_username_choices (const gchar *name,
GtkListStore *store)
{
gboolean in_use, same_as_initial;
char *lc_name, *ascii_name, *stripped_name;
char **words1;
char **words2 = NULL;
g_autofree gchar *lc_name = NULL;
g_autofree gchar *ascii_name = NULL;
g_autofree gchar *stripped_name = NULL;
g_auto(GStrv) words1 = NULL;
char **w1, **w2;
char *c;
char *unicode_fallback = "?";
GString *first_word, *last_word;
GString *item0, *item1, *item2, *item3, *item4;
g_autoptr(GString) first_word = NULL;
g_autoptr(GString) last_word = NULL;
g_autoptr(GString) item0 = NULL;
g_autoptr(GString) item1 = NULL;
g_autoptr(GString) item2 = NULL;
g_autoptr(GString) item3 = NULL;
g_autoptr(GString) item4 = NULL;
int len;
int nwords1, nwords2, i;
GHashTable *items;
g_autoptr(GHashTable) items = NULL;
GtkTreeIter iter;
gsize max_name_length;
@ -454,9 +456,6 @@ generate_username_choices (const gchar *name,
}
if (strlen (stripped_name) == 0) {
g_free (ascii_name);
g_free (lc_name);
g_free (stripped_name);
return;
}
@ -470,10 +469,6 @@ generate_username_choices (const gchar *name,
/* The default item is a concatenation of all words without ? */
item0 = g_string_sized_new (strlen (stripped_name));
g_free (ascii_name);
g_free (lc_name);
g_free (stripped_name);
/* Concatenate the whole first word with the first letter of each
* word (item1), and the last word with the first letter of each
* word (item2). item3 and item4 are symmetrical respectively to
@ -496,6 +491,8 @@ generate_username_choices (const gchar *name,
nwords1 = 0;
nwords2 = 0;
for (w1 = words1; *w1; w1++) {
g_auto(GStrv) words2 = NULL;
if (strlen (*w1) == 0)
continue;
@ -543,8 +540,6 @@ generate_username_choices (const gchar *name,
/* always save current word so that we have it if last one reveals empty */
last_word = g_string_append (last_word, *w2);
}
g_strfreev (words2);
}
item2 = g_string_append (item2, last_word->str);
item3 = g_string_append (item3, first_word->str);
@ -623,16 +618,6 @@ generate_username_choices (const gchar *name,
g_hash_table_insert (items, first_word->str, first_word->str);
}
}
g_hash_table_destroy (items);
g_strfreev (words1);
g_string_free (first_word, TRUE);
g_string_free (last_word, TRUE);
g_string_free (item0, TRUE);
g_string_free (item1, TRUE);
g_string_free (item2, TRUE);
g_string_free (item3, TRUE);
g_string_free (item4, TRUE);
}
static void
@ -684,7 +669,7 @@ update_password_match (CcAddUserDialog *self)
static void
local_password_entry_icon_press_cb (CcAddUserDialog *self)
{
gchar *pwd;
g_autofree gchar *pwd = NULL;
pwd = pw_generate ();
if (pwd == NULL)
@ -694,8 +679,6 @@ local_password_entry_icon_press_cb (CcAddUserDialog *self)
gtk_entry_set_text (self->local_verify_entry, pwd);
gtk_entry_set_visibility (self->local_password_entry, TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (self->local_verify_entry), TRUE);
g_free (pwd);
}
static gboolean
@ -813,11 +796,10 @@ enterprise_add_realm (CcAddUserDialog *self,
{
GtkTreeModel *model;
GtkTreeIter iter;
CcRealmCommon *common;
g_autoptr(CcRealmCommon) common = NULL;
const gchar *realm_name;
gboolean match;
gboolean ret;
gchar *name;
common = cc_realm_object_get_common (realm);
g_return_if_fail (common != NULL);
@ -834,12 +816,12 @@ enterprise_add_realm (CcAddUserDialog *self,
model = GTK_TREE_MODEL (self->enterprise_realm_model);
ret = gtk_tree_model_get_iter_first (model, &iter);
while (ret) {
g_autofree gchar *name = NULL;
gtk_tree_model_get (model, &iter, 0, &name, -1);
match = (g_strcmp0 (name, realm_name) == 0);
g_free (name);
if (match) {
g_debug ("ignoring duplicate realm: %s", realm_name);
g_object_unref (common);
return;
}
ret = gtk_tree_model_iter_next (model, &iter);
@ -858,8 +840,6 @@ enterprise_add_realm (CcAddUserDialog *self,
g_debug ("added realm to drop down: %s %s", realm_name,
g_dbus_object_get_object_path (G_DBUS_OBJECT (realm)));
g_object_unref (common);
}
static void
@ -875,12 +855,11 @@ on_register_user (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
GError *error = NULL;
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(GError) error = NULL;
ActUser *user;
if (g_cancellable_is_cancelled (self->cancellable)) {
g_object_unref (self);
return;
}
@ -896,10 +875,7 @@ on_register_user (GObject *source,
show_error_dialog (self, _("Failed to register account"), error);
g_message ("Couldn't cache user account: %s", error->message);
finish_action (self);
g_error_free (error);
}
g_object_unref (self);
}
static void
@ -907,20 +883,18 @@ on_permit_user_login (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
CcRealmCommon *common;
ActUserManager *manager;
GError *error = NULL;
gchar *login;
g_autoptr(GError) error = NULL;
if (g_cancellable_is_cancelled (self->cancellable)) {
g_object_unref (self);
return;
}
common = CC_REALM_COMMON (source);
cc_realm_common_call_change_login_policy_finish (common, result, &error);
if (error == NULL) {
if (cc_realm_common_call_change_login_policy_finish (common, result, &error)) {
g_autofree gchar *login = NULL;
/*
* Now tell the account service about this user. The account service
@ -936,23 +910,18 @@ on_permit_user_login (GObject *source,
act_user_manager_cache_user_async (manager, login, self->cancellable,
on_register_user, g_object_ref (self));
g_free (login);
} else {
show_error_dialog (self, _("Failed to register account"), error);
g_message ("Couldn't permit logins on account: %s", error->message);
finish_action (self);
g_error_free (error);
}
g_object_unref (self);
}
static void
enterprise_permit_user_login (CcAddUserDialog *self)
{
CcRealmCommon *common;
gchar *login;
g_autoptr(CcRealmCommon) common = NULL;
g_autofree gchar *login = NULL;
const gchar *add[2];
const gchar *remove[1];
GVariant *options;
@ -980,9 +949,6 @@ enterprise_permit_user_login (CcAddUserDialog *self)
self->cancellable,
on_permit_user_login,
g_object_ref (self));
g_object_unref (common);
g_free (login);
}
static void
@ -1011,8 +977,8 @@ static void
join_show_prompt (CcAddUserDialog *self,
GError *error)
{
CcRealmKerberosMembership *membership;
CcRealmKerberos *kerberos;
g_autoptr(CcRealmKerberosMembership) membership = NULL;
g_autoptr(CcRealmKerberos) kerberos = NULL;
const gchar *name;
gtk_entry_set_text (self->join_password, "");
@ -1052,8 +1018,6 @@ join_show_prompt (CcAddUserDialog *self,
gtk_window_present (GTK_WINDOW (self->join_dialog));
self->join_prompted = TRUE;
g_object_unref (kerberos);
g_object_unref (membership);
/* And now we wait for on_join_response() */
}
@ -1063,19 +1027,18 @@ on_join_login (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
GError *error = NULL;
GBytes *creds;
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(GError) error = NULL;
g_autoptr(GBytes) creds = NULL;
if (g_cancellable_is_cancelled (self->cancellable)) {
g_object_unref (self);
return;
}
creds = cc_realm_login_finish (result, &error);
/* Logged in as admin successfully, use creds to join domain */
if (error == NULL) {
if (creds != NULL) {
if (!cc_realm_join_as_admin (self->selected_realm,
gtk_entry_get_text (self->join_name),
gtk_entry_get_text (self->join_password),
@ -1086,23 +1049,18 @@ on_join_login (GObject *source,
finish_action (self);
}
g_bytes_unref (creds);
/* Couldn't login as admin, show prompt again */
} else {
join_show_prompt (self, error);
g_message ("Couldn't log in as admin to join domain: %s", error->message);
g_error_free (error);
}
g_object_unref (self);
}
static void
join_init (CcAddUserDialog *self)
{
GtkBuilder *builder;
GError *error = NULL;
g_autoptr(GtkBuilder) builder = NULL;
g_autoptr(GError) error = NULL;
builder = gtk_builder_new ();
@ -1110,7 +1068,6 @@ join_init (CcAddUserDialog *self)
"/org/gnome/control-center/user-accounts/join-dialog.ui",
&error)) {
g_error ("%s", error->message);
g_error_free (error);
return;
}
@ -1121,8 +1078,6 @@ join_init (CcAddUserDialog *self)
g_signal_connect_object (self->join_dialog, "response",
G_CALLBACK (on_join_response), self, G_CONNECT_SWAPPED);
g_object_unref (builder);
}
static void
@ -1130,11 +1085,10 @@ on_realm_joined (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
GError *error = NULL;
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(GError) error = NULL;
if (g_cancellable_is_cancelled (self->cancellable)) {
g_object_unref (self);
return;
}
@ -1158,9 +1112,6 @@ on_realm_joined (GObject *source,
g_message ("Failed to join the domain: %s", error->message);
finish_action (self);
}
g_clear_error (&error);
g_object_unref (self);
}
static void
@ -1168,13 +1119,12 @@ on_realm_login (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
GError *error = NULL;
GBytes *creds = NULL;
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(GError) error = NULL;
g_autoptr(GBytes) creds = NULL;
const gchar *message;
if (g_cancellable_is_cancelled (self->cancellable)) {
g_object_unref (self);
return;
}
@ -1210,8 +1160,6 @@ on_realm_login (GObject *source,
join_show_prompt (self, NULL);
}
g_bytes_unref (creds);
/* A problem with the user's login name or password */
} else if (g_error_matches (error, CC_REALM_ERROR, CC_REALM_ERROR_BAD_LOGIN)) {
g_debug ("Problem with the user's login: %s", error->message);
@ -1234,9 +1182,6 @@ on_realm_login (GObject *source,
g_message ("Couldn't log in as user: %s", error->message);
finish_action (self);
}
g_clear_error (&error);
g_object_unref (self);
}
static void
@ -1257,13 +1202,11 @@ on_realm_discover_input (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
GError *error = NULL;
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(GError) error = NULL;
GList *realms;
gchar *message;
if (g_cancellable_is_cancelled (self->cancellable)) {
g_object_unref (self);
return;
}
@ -1284,6 +1227,8 @@ on_realm_discover_input (GObject *source,
/* The domain is likely invalid*/
} else {
g_autofree gchar *message = NULL;
g_message ("Couldn't discover domain: %s", error->message);
g_dbus_error_strip_remote_error (error);
@ -1294,9 +1239,6 @@ on_realm_discover_input (GObject *source,
}
gtk_label_set_text (self->enterprise_domain_hint_label, message);
g_free (message);
g_error_free (error);
if (self->enterprise_check_credentials) {
finish_action (self);
self->enterprise_check_credentials = FALSE;
@ -1307,8 +1249,6 @@ on_realm_discover_input (GObject *source,
finish_action (self);
dialog_validate (self);
}
g_object_unref (self);
}
static void
@ -1349,8 +1289,7 @@ clear_realm_manager (CcAddUserDialog *self)
g_signal_handlers_disconnect_by_func (self->realm_manager,
on_manager_realm_added,
self);
g_object_unref (self->realm_manager);
self->realm_manager = NULL;
g_clear_object (&self->realm_manager);
}
}
@ -1359,8 +1298,8 @@ on_realm_manager_created (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
GError *error = NULL;
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(GError) error = NULL;
GList *realms, *l;
clear_realm_manager (self);
@ -1368,13 +1307,10 @@ on_realm_manager_created (GObject *source,
self->realm_manager = cc_realm_manager_new_finish (result, &error);
if (error != NULL) {
g_warning ("Couldn't contact realmd service: %s", error->message);
g_object_unref (self);
g_error_free (error);
return;
}
if (g_cancellable_is_cancelled (self->cancellable)) {
g_object_unref (self);
return;
}
@ -1393,7 +1329,6 @@ on_realm_manager_created (GObject *source,
/* Show the 'Enterprise Login' stuff, and update mode */
gtk_widget_show (GTK_WIDGET (self->enterprise_button));
mode_change (self, self->mode);
g_object_unref (self);
}
static void
@ -1595,8 +1530,8 @@ on_permission_acquired (GObject *source_object,
GAsyncResult *res,
gpointer user_data)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (user_data);
GError *error = NULL;
g_autoptr(CcAddUserDialog) self = CC_ADD_USER_DIALOG (user_data);
g_autoptr(GError) error = NULL;
/* Paired with begin_action in cc_add_user_dialog_response () */
finish_action (self);
@ -1607,9 +1542,6 @@ on_permission_acquired (GObject *source_object,
} else if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
g_warning ("Failed to acquire permission: %s", error->message);
}
g_clear_error (&error);
g_object_unref (self);
}
static void
@ -1653,8 +1585,7 @@ cc_add_user_dialog_dispose (GObject *obj)
g_signal_handlers_disconnect_by_func (self->realm_manager,
on_manager_realm_added,
self);
g_object_unref (self->realm_manager);
self->realm_manager = NULL;
g_clear_object (&self->realm_manager);
}
if (self->local_password_timeout_id != 0) {
@ -1687,8 +1618,7 @@ cc_add_user_dialog_finalize (GObject *obj)
{
CcAddUserDialog *self = CC_ADD_USER_DIALOG (obj);
if (self->cancellable)
g_object_unref (self->cancellable);
g_clear_object (&self->cancellable);
g_clear_object (&self->permission);
G_OBJECT_CLASS (cc_add_user_dialog_parent_class)->finalize (obj);

View file

@ -73,7 +73,8 @@ crop_dialog_response (CcAvatarChooser *self,
gint response_id,
GtkWidget *dialog)
{
GdkPixbuf *pb, *pb2;
g_autoptr(GdkPixbuf) pb = NULL;
g_autoptr(GdkPixbuf) pb2 = NULL;
if (response_id != GTK_RESPONSE_ACCEPT) {
self->crop_area = NULL;
@ -86,9 +87,6 @@ crop_dialog_response (CcAvatarChooser *self,
set_user_icon_data (self->user, pb2);
g_object_unref (pb2);
g_object_unref (pb);
self->crop_area = NULL;
gtk_widget_destroy (dialog);
@ -136,9 +134,10 @@ file_chooser_response (CcAvatarChooser *self,
gint response,
GtkDialog *chooser)
{
gchar *filename;
GError *error;
GdkPixbuf *pixbuf, *pixbuf2;
g_autofree gchar *filename = NULL;
g_autoptr(GError) error = NULL;
g_autoptr(GdkPixbuf) pixbuf = NULL;
g_autoptr(GdkPixbuf) pixbuf2 = NULL;
if (response != GTK_RESPONSE_ACCEPT) {
gtk_widget_destroy (GTK_WIDGET (chooser));
@ -147,36 +146,31 @@ file_chooser_response (CcAvatarChooser *self,
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
error = NULL;
pixbuf = gdk_pixbuf_new_from_file (filename, &error);
if (pixbuf == NULL) {
g_warning ("Failed to load %s: %s", filename, error->message);
g_error_free (error);
}
g_free (filename);
pixbuf2 = gdk_pixbuf_apply_embedded_orientation (pixbuf);
g_object_unref (pixbuf);
gtk_widget_destroy (GTK_WIDGET (chooser));
cc_avatar_chooser_crop (self, pixbuf2);
g_object_unref (pixbuf2);
}
static void
update_preview (GtkFileChooser *chooser,
GnomeDesktopThumbnailFactory *thumb_factory)
{
gchar *uri;
g_autofree gchar *uri = NULL;
uri = gtk_file_chooser_get_uri (chooser);
if (uri) {
GdkPixbuf *pixbuf = NULL;
char *mime_type = NULL;
GFile *file;
GFileInfo *file_info;
g_autoptr(GdkPixbuf) pixbuf = NULL;
g_autofree char *mime_type = NULL;
g_autoptr(GFile) file = NULL;
g_autoptr(GFileInfo) file_info = NULL;
GtkWidget *preview;
preview = gtk_file_chooser_get_preview_widget (chooser);
@ -186,19 +180,16 @@ update_preview (GtkFileChooser *chooser,
"standard::*",
G_FILE_QUERY_INFO_NONE,
NULL, NULL);
g_object_unref (file);
if (file_info != NULL &&
g_file_info_get_file_type (file_info) != G_FILE_TYPE_DIRECTORY) {
mime_type = g_strdup (g_file_info_get_content_type (file_info));
g_object_unref (file_info);
}
if (mime_type) {
pixbuf = gnome_desktop_thumbnail_factory_generate_thumbnail (thumb_factory,
uri,
mime_type);
g_free (mime_type);
}
gtk_dialog_set_response_sensitive (GTK_DIALOG (chooser),
@ -207,15 +198,12 @@ update_preview (GtkFileChooser *chooser,
if (pixbuf != NULL) {
gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf);
g_object_unref (pixbuf);
}
else {
gtk_image_set_from_icon_name (GTK_IMAGE (preview),
"dialog-question",
GTK_ICON_SIZE_DIALOG);
}
g_free (uri);
}
gtk_file_chooser_set_preview_widget_active (chooser, TRUE);
@ -280,15 +268,13 @@ webcam_response_cb (CcAvatarChooser *self,
GtkDialog *dialog)
{
if (response == GTK_RESPONSE_ACCEPT) {
GdkPixbuf *pb, *pb2;
g_autoptr(GdkPixbuf) pb = NULL;
g_autoptr(GdkPixbuf) pb2 = NULL;
g_object_get (G_OBJECT (dialog), "pixbuf", &pb, NULL);
pb2 = gdk_pixbuf_scale_simple (pb, PIXEL_SIZE, PIXEL_SIZE, GDK_INTERP_BILINEAR);
set_user_icon_data (self->user, pb2);
g_object_unref (pb2);
g_object_unref (pb);
}
if (response != GTK_RESPONSE_DELETE_EVENT &&
response != GTK_RESPONSE_NONE)
@ -448,15 +434,16 @@ get_system_facesdirs (void)
static gboolean
add_faces_from_dirs (GListStore *faces, GStrv facesdirs, gboolean add_all)
{
GFile *file, *dir;
GFileInfo *info;
GFileEnumerator *enumerator;
GFile *file;
GFileType type;
const gchar *target;
guint i;
gboolean added_faces = FALSE;
for (i = 0; facesdirs[i] != NULL; i++) {
g_autoptr(GFile) dir = NULL;
g_autoptr(GFileEnumerator) enumerator = NULL;
dir = g_file_new_for_path (facesdirs[i]);
enumerator = g_file_enumerate_children (dir,
@ -467,34 +454,33 @@ add_faces_from_dirs (GListStore *faces, GStrv facesdirs, gboolean add_all)
G_FILE_QUERY_INFO_NONE,
NULL, NULL);
if (enumerator == NULL) {
g_object_unref (dir);
continue;
}
while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL) {
while (TRUE) {
g_autoptr(GFileInfo) info = g_file_enumerator_next_file (enumerator, NULL, NULL);
if (info == NULL) {
break;
}
type = g_file_info_get_file_type (info);
if (type != G_FILE_TYPE_REGULAR &&
type != G_FILE_TYPE_SYMBOLIC_LINK) {
g_object_unref (info);
continue;
}
target = g_file_info_get_symlink_target (info);
if (target != NULL && g_str_has_prefix (target , "legacy/")) {
g_object_unref (info);
continue;
}
file = g_file_get_child (dir, g_file_info_get_name (info));
g_list_store_append (faces, file);
g_object_unref (info);
added_faces = TRUE;
}
g_file_enumerator_close (enumerator, NULL, NULL);
g_object_unref (enumerator);
g_object_unref (dir);
if (added_faces && !add_all)
break;
@ -647,8 +633,7 @@ cc_avatar_chooser_set_user (CcAvatarChooser *self,
if (self->user) {
gtk_container_foreach (GTK_CONTAINER (self->user_flowbox), (GtkCallback) gtk_widget_destroy, NULL);
g_object_unref (self->user);
self->user = NULL;
g_clear_object (&self->user);
}
self->user = g_object_ref (user);

View file

@ -110,7 +110,7 @@ static void
cc_carousel_move_arrow (CcCarousel *self)
{
GtkStyleContext *context;
gchar *css;
g_autofree gchar *css = NULL;
gint end_x;
GtkSettings *settings;
gboolean animations;
@ -149,8 +149,6 @@ cc_carousel_move_arrow (CcCarousel *self)
self->provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (self->provider), css, -1, NULL);
gtk_style_context_add_provider (context, self->provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
g_free (css);
}
static gint
@ -413,7 +411,7 @@ on_transition_running (CcCarousel *self)
static void
cc_carousel_init (CcCarousel *self)
{
GtkStyleProvider *provider;
g_autoptr(GtkStyleProvider) provider = NULL;
gtk_widget_init_template (GTK_WIDGET (self));
@ -425,8 +423,6 @@ cc_carousel_init (CcCarousel *self)
provider,
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
g_object_unref (provider);
g_signal_connect_object (self->stack, "size-allocate", G_CALLBACK (on_size_allocate), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->stack, "notify::transition-running", G_CALLBACK (on_transition_running), self, G_CONNECT_SWAPPED);
}

View file

@ -763,10 +763,7 @@ cc_crop_area_set_picture (CcCropArea *area,
int width;
int height;
if (area->browse_pixbuf) {
g_object_unref (area->browse_pixbuf);
area->browse_pixbuf = NULL;
}
g_clear_object (&area->browse_pixbuf);
if (pixbuf) {
area->browse_pixbuf = g_object_ref (pixbuf);
width = gdk_pixbuf_get_width (pixbuf);

View file

@ -62,20 +62,19 @@ cc_realm_error_get_quark (void)
static gboolean
is_realm_with_kerberos_and_membership (gpointer object)
{
GDBusInterface *interface;
g_autoptr(GDBusInterface) kerberos_interface = NULL;
g_autoptr(GDBusInterface) kerberos_membership_interface = NULL;
if (!G_IS_DBUS_OBJECT (object))
return FALSE;
interface = g_dbus_object_get_interface (object, "org.freedesktop.realmd.Kerberos");
if (interface == NULL)
kerberos_interface = g_dbus_object_get_interface (object, "org.freedesktop.realmd.Kerberos");
if (kerberos_interface == NULL)
return FALSE;
g_object_unref (interface);
interface = g_dbus_object_get_interface (object, "org.freedesktop.realmd.KerberosMembership");
if (interface == NULL)
kerberos_membership_interface = g_dbus_object_get_interface (object, "org.freedesktop.realmd.KerberosMembership");
if (kerberos_membership_interface == NULL)
return FALSE;
g_object_unref (interface);
return TRUE;
}
@ -167,7 +166,7 @@ on_provider_new (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
GTask *task = G_TASK (user_data);
g_autoptr(GTask) task = G_TASK (user_data);
CcRealmManager *manager = g_task_get_task_data (task);
GError *error = NULL;
@ -179,8 +178,6 @@ on_provider_new (GObject *source,
} else {
g_task_return_error (task, error);
}
g_object_unref (task);
}
static void
@ -188,7 +185,7 @@ on_manager_new (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
GTask *task = G_TASK (user_data);
g_autoptr(GTask) task = G_TASK (user_data);
CcRealmManager *manager;
GDBusConnection *connection;
GError *error = NULL;
@ -222,9 +219,9 @@ on_manager_new (GObject *source,
"/org/freedesktop/realmd",
g_task_get_cancellable (task),
on_provider_new, task);
g_steal_pointer (&task);
} else {
g_task_return_error (task, error);
g_object_unref (task);
}
}
@ -271,9 +268,8 @@ on_provider_discover (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
GTask *task = G_TASK (user_data);
g_autoptr(GTask) task = G_TASK (user_data);
CcRealmManager *manager = g_task_get_source_object (task);
GDBusObject *object;
GError *error = NULL;
gboolean no_membership = FALSE;
gchar **realms;
@ -285,17 +281,18 @@ on_provider_discover (GObject *source,
&realms, result, &error);
if (error == NULL) {
for (i = 0; realms[i]; i++) {
g_autoptr(GDBusObject) object = NULL;
object = g_dbus_object_manager_get_object (G_DBUS_OBJECT_MANAGER (manager), realms[i]);
if (object == NULL) {
g_warning ("Realm is not in object manager: %s", realms[i]);
} else {
if (is_realm_with_kerberos_and_membership (object)) {
g_debug ("Discovered realm: %s", realms[i]);
kerberos_realms = g_list_prepend (kerberos_realms, object);
kerberos_realms = g_list_prepend (kerberos_realms, g_steal_pointer (&object));
} else {
g_debug ("Realm does not support kerberos membership: %s", realms[i]);
no_membership = TRUE;
g_object_unref (object);
}
}
}
@ -314,8 +311,6 @@ on_provider_discover (GObject *source,
} else {
g_task_return_error (task, error);
}
g_object_unref (task);
}
void
@ -395,26 +390,23 @@ gchar *
cc_realm_calculate_login (CcRealmCommon *realm,
const gchar *username)
{
GString *string;
const gchar *const *formats;
gchar *login = NULL;
formats = cc_realm_common_get_login_formats (realm);
if (formats[0] != NULL) {
string = g_string_new (formats[0]);
GString *string = g_string_new (formats[0]);
string_replace (string, "%U", username);
string_replace (string, "%D", cc_realm_common_get_name (realm));
login = g_string_free (string, FALSE);
return g_string_free (string, FALSE);
}
return login;
return NULL;
}
gboolean
cc_realm_is_configured (CcRealmObject *realm)
{
CcRealmCommon *common;
g_autoptr(CcRealmCommon) common = NULL;
const gchar *configured;
gboolean is = FALSE;
@ -422,7 +414,6 @@ cc_realm_is_configured (CcRealmObject *realm)
if (common != NULL) {
configured = cc_realm_common_get_configured (common);
is = configured != NULL && !g_str_equal (configured, "");
g_object_unref (common);
}
return is;
@ -463,7 +454,7 @@ realm_join_as_owner (CcRealmObject *realm,
GAsyncReadyCallback callback,
gpointer user_data)
{
CcRealmKerberosMembership *membership;
g_autoptr(CcRealmKerberosMembership) membership = NULL;
GVariant *contents;
GVariant *options;
GVariant *option;
@ -476,7 +467,6 @@ realm_join_as_owner (CcRealmObject *realm,
type = find_supported_credentials (membership, owner);
if (type == NULL) {
g_debug ("Couldn't find supported credential type for owner: %s", owner);
g_object_unref (membership);
return FALSE;
}
@ -503,7 +493,6 @@ realm_join_as_owner (CcRealmObject *realm,
cc_realm_kerberos_membership_call_join (membership, creds, options,
cancellable, callback, user_data);
g_object_unref (membership);
return TRUE;
}
@ -553,9 +542,9 @@ cc_realm_join_finish (CcRealmObject *realm,
GAsyncResult *result,
GError **error)
{
CcRealmKerberosMembership *membership;
GError *call_error = NULL;
gchar *dbus_error;
g_autoptr(CcRealmKerberosMembership) membership = NULL;
g_autoptr(GError) call_error = NULL;
g_autofree gchar *dbus_error = NULL;
g_return_val_if_fail (CC_REALM_IS_OBJECT (realm), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
@ -563,10 +552,7 @@ cc_realm_join_finish (CcRealmObject *realm,
membership = cc_realm_object_get_kerberos_membership (realm);
g_return_val_if_fail (membership != NULL, FALSE);
cc_realm_kerberos_membership_call_join_finish (membership, result, &call_error);
g_object_unref (membership);
if (call_error == NULL) {
if (cc_realm_kerberos_membership_call_join_finish (membership, result, &call_error)) {
g_debug ("Completed Join() method call");
return TRUE;
}
@ -574,7 +560,7 @@ cc_realm_join_finish (CcRealmObject *realm,
dbus_error = g_dbus_error_get_remote_error (call_error);
if (dbus_error == NULL) {
g_debug ("Join() failed because of %s", call_error->message);
g_propagate_error (error, call_error);
g_propagate_error (error, g_steal_pointer (&call_error));
return FALSE;
}
@ -584,13 +570,11 @@ cc_realm_join_finish (CcRealmObject *realm,
g_debug ("Join() failed because of invalid/insufficient credentials");
g_set_error (error, CC_REALM_ERROR, CC_REALM_ERROR_BAD_LOGIN,
"%s", call_error->message);
g_error_free (call_error);
} else {
g_debug ("Join() failed because of %s", call_error->message);
g_propagate_error (error, call_error);
g_propagate_error (error, g_steal_pointer (&call_error));
}
g_free (dbus_error);
return FALSE;
}
@ -605,10 +589,10 @@ static void
login_closure_free (gpointer data)
{
LoginClosure *login = data;
g_free (login->domain);
g_free (login->realm);
g_free (login->user);
g_free (login->password);
g_clear_pointer (&login->domain, g_free);
g_clear_pointer (&login->realm, g_free);
g_clear_pointer (&login->user, g_free);
g_clear_pointer (&login->password, g_free);
g_slice_free (LoginClosure, login);
}
@ -624,7 +608,7 @@ login_perform_kinit (krb5_context k5,
krb5_principal principal;
krb5_ccache ccache;
krb5_creds creds;
gchar *name;
g_autofree gchar *name = NULL;
name = g_strdup_printf ("%s@%s", login, realm);
code = krb5_parse_name (k5, name, &principal);
@ -632,12 +616,10 @@ login_perform_kinit (krb5_context k5,
if (code != 0) {
g_debug ("Couldn't parse principal name: %s: %s",
name, krb5_get_error_message (k5, code));
g_free (name);
return code;
}
g_debug ("Using principal name to kinit: %s", name);
g_free (name);
if (filename == NULL)
code = krb5_cc_default (k5, &ccache);
@ -677,16 +659,16 @@ login_perform_kinit (krb5_context k5,
}
static void
kinit_thread_func (GTask *task,
kinit_thread_func (GTask *t,
gpointer object,
gpointer task_data,
GCancellable *cancellable)
{
g_autoptr(GTask) task = t;
LoginClosure *login = task_data;
krb5_context k5 = NULL;
krb5_error_code code;
GError *error = NULL;
gchar *filename = NULL;
g_autofree gchar *filename = NULL;
gchar *contents;
gsize length;
gint temp_fd;
@ -697,8 +679,7 @@ kinit_thread_func (GTask *task,
if (temp_fd == -1) {
g_warning ("Couldn't create credential cache file: %s: %s",
filename, g_strerror (errno));
g_free (filename);
filename = NULL;
g_clear_pointer (&filename, g_free);
} else {
close (temp_fd);
}
@ -712,13 +693,13 @@ kinit_thread_func (GTask *task,
switch (code) {
case 0:
if (filename != NULL) {
g_file_get_contents (filename, &contents, &length, &error);
if (error == NULL) {
g_autoptr(GError) error = NULL;
if (g_file_get_contents (filename, &contents, &length, &error)) {
g_debug ("Read in credential cache: %s", filename);
} else {
g_warning ("Couldn't read credential cache: %s: %s",
filename, error->message);
g_error_free (error);
}
g_task_return_pointer (task, g_bytes_new_take (contents, length), (GDestroyNotify) g_bytes_unref);
@ -755,13 +736,10 @@ kinit_thread_func (GTask *task,
if (filename) {
g_unlink (filename);
g_debug ("Deleted credential cache: %s", filename);
g_free (filename);
}
if (k5)
krb5_free_context (k5);
g_object_unref (task);
}
void
@ -774,7 +752,7 @@ cc_realm_login (CcRealmObject *realm,
{
GTask *task;
LoginClosure *login;
CcRealmKerberos *kerberos;
g_autoptr(CcRealmKerberos) kerberos = NULL;
g_return_if_fail (CC_REALM_IS_OBJECT (realm));
g_return_if_fail (user != NULL);
@ -796,8 +774,6 @@ cc_realm_login (CcRealmObject *realm,
g_task_set_return_on_cancel (task, TRUE);
g_task_run_in_thread (task, kinit_thread_func);
g_object_unref (kerberos);
}
GBytes *

View file

@ -38,7 +38,8 @@ render_user_icon (ActUser *user,
gint scale)
{
g_autoptr(GdkPixbuf) source_pixbuf = NULL;
GdkPixbuf *pixbuf = NULL;
g_autoptr(GdkPixbuf) avatar_pixbuf = NULL;
g_autoptr(GdkPixbuf) pixbuf = NULL;
const gchar *icon_file;
cairo_surface_t *surface = NULL;
@ -46,7 +47,6 @@ render_user_icon (ActUser *user,
g_return_val_if_fail (icon_size > 12, NULL);
icon_file = act_user_get_icon_file (user);
pixbuf = NULL;
if (icon_file) {
source_pixbuf = gdk_pixbuf_new_from_file_at_size (icon_file,
icon_size * scale,
@ -60,18 +60,13 @@ render_user_icon (ActUser *user,
goto out;
}
if (source_pixbuf != NULL) {
g_object_unref (source_pixbuf);
}
source_pixbuf = generate_default_avatar (user, icon_size * scale);
if (source_pixbuf)
pixbuf = round_image (source_pixbuf);
avatar_pixbuf = generate_default_avatar (user, icon_size * scale);
if (avatar_pixbuf)
pixbuf = round_image (avatar_pixbuf);
out:
if (pixbuf != NULL) {
surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, scale, NULL);
g_object_unref (pixbuf);
}
return surface;

View file

@ -132,12 +132,14 @@ typedef struct {
static void
async_delete_data_free (AsyncDeleteData *data)
{
g_object_unref (data->self);
g_object_unref (data->cancellable);
g_free (data->login);
g_clear_object (&data->self);
g_clear_object (&data->cancellable);
g_clear_pointer (&data->login, g_free);
g_slice_free (AsyncDeleteData, data);
}
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AsyncDeleteData, async_delete_data_free)
static void
show_error_dialog (CcUserPanel *self,
const gchar *message,
@ -199,7 +201,8 @@ static GtkWidget *
create_carousel_entry (CcUserPanel *self, ActUser *user)
{
GtkWidget *box, *widget;
gchar *label;
g_autofree gchar *label = NULL;
g_autofree gchar *subtitle_label = NULL;
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
@ -214,16 +217,14 @@ create_carousel_entry (CcUserPanel *self, ActUser *user)
gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
gtk_widget_set_margin_top (widget, 5);
gtk_box_pack_start (GTK_BOX (box), widget, FALSE, TRUE, 0);
g_free (label);
if (act_user_get_uid (user) == getuid ())
label = g_strdup_printf ("<small>%s</small>", _("Your account"));
subtitle_label = g_strdup_printf ("<small>%s</small>", _("Your account"));
else
label = g_strdup (" ");
subtitle_label = g_strdup (" ");
widget = gtk_label_new (label);
widget = gtk_label_new (subtitle_label);
gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
g_free (label);
gtk_box_pack_start (GTK_BOX (box), widget, FALSE, TRUE, 0);
gtk_style_context_add_class (gtk_widget_get_style_context (widget),
@ -266,30 +267,26 @@ static gint
sort_users (gconstpointer a, gconstpointer b)
{
ActUser *ua, *ub;
gchar *name1, *name2;
gint result;
ua = ACT_USER (a);
ub = ACT_USER (b);
/* Make sure the current user is shown first */
if (act_user_get_uid (ua) == getuid ()) {
result = -G_MAXINT32;
return -G_MAXINT32;
}
else if (act_user_get_uid (ub) == getuid ()) {
result = G_MAXINT32;
return G_MAXINT32;
}
else {
g_autofree gchar *name1 = NULL;
g_autofree gchar *name2 = NULL;
name1 = g_utf8_collate_key (get_real_or_user_name (ua), -1);
name2 = g_utf8_collate_key (get_real_or_user_name (ub), -1);
result = strcmp (name1, name2);
g_free (name1);
g_free (name2);
return strcmp (name1, name2);
}
return result;
}
static void
@ -392,15 +389,12 @@ delete_user_done (ActUserManager *manager,
GAsyncResult *res,
CcUserPanel *self)
{
GError *error;
g_autoptr(GError) error = NULL;
error = NULL;
if (!act_user_manager_delete_user_finish (manager, res, &error)) {
if (!g_error_matches (error, ACT_USER_MANAGER_ERROR,
ACT_USER_MANAGER_ERROR_PERMISSION_DENIED))
show_error_dialog (self, _("Failed to delete user"), error);
g_error_free (error);
}
}
@ -444,33 +438,29 @@ enterprise_user_revoked (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
AsyncDeleteData *data = user_data;
g_autoptr(AsyncDeleteData) data = user_data;
CcUserPanel *self = data->self;
CcRealmCommon *common = CC_REALM_COMMON (source);
GError *error = NULL;
g_autoptr(GError) error = NULL;
if (g_cancellable_is_cancelled (data->cancellable)) {
async_delete_data_free (data);
return;
}
cc_realm_common_call_change_login_policy_finish (common, result, &error);
if (error != NULL) {
show_error_dialog (self, _("Failed to revoke remotely managed user"), error);
g_error_free (error);
}
async_delete_data_free (data);
}
static CcRealmCommon *
find_matching_realm (CcRealmManager *realm_manager, const gchar *login)
{
CcRealmCommon *common = NULL;
GList *realms, *l;
GList *realms;
realms = cc_realm_manager_get_realms (realm_manager);
for (l = realms; l != NULL; l = g_list_next (l)) {
for (GList *l = realms; l != NULL; l = g_list_next (l)) {
const gchar * const *permitted_logins;
gint i;
@ -499,25 +489,22 @@ realm_manager_found (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
AsyncDeleteData *data = user_data;
g_autoptr(AsyncDeleteData) data = user_data;
CcUserPanel *self = data->self;
CcRealmCommon *common;
g_autoptr(CcRealmCommon) common = NULL;
CcRealmManager *realm_manager;
const gchar *add[1];
const gchar *remove[2];
GVariant *options;
GError *error = NULL;
g_autoptr(GError) error = NULL;
if (g_cancellable_is_cancelled (data->cancellable)) {
async_delete_data_free (data);
return;
}
realm_manager = cc_realm_manager_new_finish (result, &error);
if (error != NULL) {
show_error_dialog (self, _("Failed to revoke remotely managed user"), error);
g_error_free (error);
async_delete_data_free (data);
return;
}
@ -525,7 +512,6 @@ realm_manager_found (GObject *source,
common = find_matching_realm (realm_manager, data->login);
if (common == NULL) {
/* The realm was probably left */
async_delete_data_free (data);
return;
}
@ -541,9 +527,7 @@ realm_manager_found (GObject *source,
add, remove, options,
data->cancellable,
enterprise_user_revoked,
data);
g_object_unref (common);
g_steal_pointer (&data));
}
static void
@ -551,25 +535,22 @@ enterprise_user_uncached (GObject *source,
GAsyncResult *res,
gpointer user_data)
{
AsyncDeleteData *data = user_data;
g_autoptr(AsyncDeleteData) data = user_data;
CcUserPanel *self = data->self;
ActUserManager *manager = ACT_USER_MANAGER (source);
GError *error = NULL;
g_autoptr(GError) error = NULL;
if (g_cancellable_is_cancelled (data->cancellable)) {
async_delete_data_free (data);
return;
}
act_user_manager_uncache_user_finish (manager, res, &error);
if (error == NULL) {
/* Find realm manager */
cc_realm_manager_new (cc_panel_get_cancellable (CC_PANEL (self)), realm_manager_found, data);
cc_realm_manager_new (cc_panel_get_cancellable (CC_PANEL (self)), realm_manager_found, g_steal_pointer (&data));
}
else {
show_error_dialog (self, _("Failed to revoke remotely managed user"), error);
g_error_free (error);
async_delete_data_free (data);
}
}
@ -766,34 +747,31 @@ autologin_changed (CcUserPanel *self)
static gchar *
get_login_time_text (ActUser *user)
{
gchar *text, *date_str, *time_str;
GDateTime *date_time;
gint64 time;
time = act_user_get_login_time (user);
if (act_user_is_logged_in (user)) {
text = g_strdup (_("Logged in"));
return g_strdup (_("Logged in"));
}
else if (time > 0) {
g_autoptr(GDateTime) date_time = NULL;
g_autofree gchar *date_str = NULL;
g_autofree gchar *time_str = NULL;
date_time = g_date_time_new_from_unix_local (time);
date_str = cc_util_get_smart_date (date_time);
/* Translators: This is a time format string in the style of "22:58".
It indicates a login time which follows a date. */
time_str = g_date_time_format (date_time, C_("login date-time", "%k:%M"));
/* Translators: This indicates a login date-time.
The first %s is a date, and the second %s a time. */
text = g_strdup_printf(C_("login date-time", "%s, %s"), date_str, time_str);
g_date_time_unref (date_time);
g_free (date_str);
g_free (time_str);
return g_strdup_printf(C_("login date-time", "%s, %s"), date_str, time_str);
}
else {
text = g_strdup ("");
return g_strdup ("");
}
return text;
}
static gboolean
@ -868,7 +846,8 @@ update_fingerprint_row_state (CcUserPanel *self, GParamSpec *spec, CcFingerprint
static void
show_user (ActUser *user, CcUserPanel *self)
{
gchar *lang, *text, *name;
g_autofree gchar *lang = NULL;
g_autofree gchar *name = NULL;
gboolean show, enable;
ActUser *current;
@ -904,7 +883,6 @@ show_user (ActUser *user, CcUserPanel *self)
g_signal_handlers_unblock_by_func (self->autologin_switch, autologin_changed, self);
gtk_widget_set_sensitive (GTK_WIDGET (self->autologin_switch), get_autologin_possible (user));
name = NULL;
lang = g_strdup (act_user_get_language (user));
if (lang && *lang != '\0') {
@ -914,8 +892,6 @@ show_user (ActUser *user, CcUserPanel *self)
}
gtk_label_set_label (self->language_button_label, name);
g_free (lang);
g_free (name);
/* Fingerprint: show when self, local, enabled, and possible */
show = (act_user_get_uid (user) == getuid() &&
@ -969,9 +945,10 @@ show_user (ActUser *user, CcUserPanel *self)
show = act_user_get_uid (user) == getuid () ||
act_user_get_account_type (current) == ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR;
if (show) {
g_autofree gchar *text = NULL;
text = get_login_time_text (user);
gtk_label_set_label (self->last_login_button_label, text);
g_free (text);
}
gtk_widget_set_visible (GTK_WIDGET (self->last_login_row), show);
@ -1059,7 +1036,7 @@ dismiss_notification (CcUserPanel *self)
static void
restart_now (CcUserPanel *self)
{
GDBusConnection *bus;
g_autoptr(GDBusConnection) bus = NULL;
gtk_revealer_set_reveal_child (self->notification_revealer, FALSE);
@ -1072,7 +1049,6 @@ restart_now (CcUserPanel *self)
g_variant_new ("(u)", 0),
NULL, 0, G_MAXINT,
NULL, NULL, NULL);
g_object_unref (bus);
}
static void
@ -1292,7 +1268,7 @@ static void
add_unlock_tooltip (GtkWidget *widget)
{
gchar *names[3];
GIcon *icon;
g_autoptr(GIcon) icon;
names[0] = "changes-allow-symbolic";
names[1] = "changes-allow";
@ -1306,7 +1282,6 @@ add_unlock_tooltip (GtkWidget *widget)
_("To make changes,\nclick the * icon first"),
"*",
icon);
g_object_unref (icon);
g_signal_connect (widget, "button-release-event",
G_CALLBACK (show_tooltip_now), NULL);
}
@ -1381,7 +1356,7 @@ on_permission_changed (CcUserPanel *self)
}
else {
gchar *names[3];
GIcon *icon;
g_autoptr(GIcon) icon = NULL;
names[0] = "changes-allow-symbolic";
names[1] = "changes-allow";
@ -1392,7 +1367,6 @@ on_permission_changed (CcUserPanel *self)
_("To delete the selected user account,\nclick the * icon first"),
"*",
icon);
g_object_unref (icon);
}
if (!act_user_is_local_account (user)) {
@ -1486,8 +1460,8 @@ on_permission_changed (CcUserPanel *self)
static void
setup_main_window (CcUserPanel *self)
{
GIcon *icon;
GError *error = NULL;
g_autoptr(GIcon) icon = NULL;
g_autoptr(GError) error = NULL;
gchar *names[3];
gboolean loaded;
@ -1502,7 +1476,6 @@ setup_main_window (CcUserPanel *self)
on_permission_changed (self);
} else {
g_warning ("Cannot create '%s' permission: %s", USER_ACCOUNTS_PERMISSION, error->message);
g_error_free (error);
}
names[0] = "changes-allow-symbolic";
@ -1513,7 +1486,6 @@ setup_main_window (CcUserPanel *self)
_("To delete the selected user account,\nclick the * icon first"),
"*",
icon);
g_object_unref (icon);
g_object_get (self->um, "is-loaded", &loaded, NULL);
if (loaded)
@ -1571,7 +1543,7 @@ static void
cc_user_panel_init (CcUserPanel *self)
{
volatile GType type G_GNUC_UNUSED;
GtkCssProvider *provider;
g_autoptr(GtkCssProvider) provider = NULL;
g_resources_register (cc_user_accounts_get_resource ());
@ -1589,7 +1561,6 @@ cc_user_panel_init (CcUserPanel *self)
gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
g_object_unref (provider);
self->login_screen_settings = settings_or_null ("org.gnome.login-screen");

View file

@ -252,8 +252,6 @@ stop_passwd (PasswdHandler *passwd_handler)
static void
free_passwd_resources (PasswdHandler *passwd_handler)
{
GError *error = NULL;
/* Remove the child watcher */
if (passwd_handler->backend_child_watch_id != 0) {
@ -265,28 +263,23 @@ free_passwd_resources (PasswdHandler *passwd_handler)
/* Close IO channels (internal file descriptors are automatically closed) */
if (passwd_handler->backend_stdin != NULL) {
g_autoptr(GError) error = NULL;
if (g_io_channel_shutdown (passwd_handler->backend_stdin, TRUE, &error) != G_IO_STATUS_NORMAL) {
g_warning ("Could not shutdown backend_stdin IO channel: %s", error->message);
g_error_free (error);
error = NULL;
}
g_io_channel_unref (passwd_handler->backend_stdin);
passwd_handler->backend_stdin = NULL;
g_clear_pointer (&passwd_handler->backend_stdin, g_io_channel_unref);
}
if (passwd_handler->backend_stdout != NULL) {
g_autoptr(GError) error = NULL;
if (g_io_channel_shutdown (passwd_handler->backend_stdout, TRUE, &error) != G_IO_STATUS_NORMAL) {
g_warning ("Could not shutdown backend_stdout IO channel: %s", error->message);
g_error_free (error);
error = NULL;
}
g_io_channel_unref (passwd_handler->backend_stdout);
passwd_handler->backend_stdout = NULL;
g_clear_pointer (&passwd_handler->backend_stdout, g_io_channel_unref);
}
/* Remove IO watcher */
@ -321,9 +314,9 @@ free_passwd_resources (PasswdHandler *passwd_handler)
static void
io_queue_pop (GQueue *queue, GIOChannel *channel)
{
gchar *buf;
g_autofree gchar *buf = NULL;
gsize bytes_written;
GError *error = NULL;
g_autoptr(GError) error = NULL;
buf = g_queue_pop_head (queue);
@ -331,12 +324,10 @@ io_queue_pop (GQueue *queue, GIOChannel *channel)
if (g_io_channel_write_chars (channel, buf, -1, &bytes_written, &error) != G_IO_STATUS_NORMAL) {
g_warning ("Could not write queue element \"%s\" to channel: %s", buf, error->message);
g_error_free (error);
}
/* Ensure passwords are cleared from memory */
memset (buf, 0, strlen (buf));
g_free (buf);
}
}
@ -377,8 +368,7 @@ io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *pass
gchar buf[BUFSIZE]; /* Temporary buffer */
gsize bytes_read;
GError *gio_error = NULL; /* Error returned by functions */
GError *error = NULL; /* Error sent to callbacks */
g_autoptr(GError) gio_error = NULL;
gboolean reinit = FALSE;
@ -390,8 +380,6 @@ io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *pass
if (g_io_channel_read_chars (source, buf, BUFSIZE, &bytes_read, &gio_error)
!= G_IO_STATUS_NORMAL) {
g_warning ("IO Channel read error: %s", gio_error->message);
g_error_free (gio_error);
return TRUE;
}
@ -419,6 +407,7 @@ io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *pass
} else {
/* Authentication failed */
g_autoptr(GError) error = NULL;
error = g_error_new_literal (PASSWD_ERROR, PASSWD_ERROR_AUTH_FAILED,
_("Authentication failed"));
@ -435,8 +424,6 @@ io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *pass
passwd_handler->auth_cb (passwd_handler,
error,
passwd_handler->auth_cb_data);
g_error_free (error);
}
reinit = TRUE;
@ -492,6 +479,7 @@ io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *pass
}
else {
/* Ohnoes! */
g_autoptr(GError) error = NULL;
if (strstr (str->str, "recovered") != NULL) {
/* What does this indicate?
@ -551,9 +539,6 @@ io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *pass
passwd_handler->chpasswd_cb (passwd_handler,
error,
passwd_handler->chpasswd_cb_data);
g_error_free (error);
}
reinit = TRUE;
@ -569,14 +554,13 @@ io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *pass
* passwd will immediately ask for the new password,
* so skip the AUTH phase */
if (is_string_complete (str->str, "new", "New", NULL)) {
gchar *pw;
g_autofree gchar *pw = NULL;
passwd_handler->backend_state = PASSWD_STATE_NEW;
/* since passwd didn't ask for our old password
* in this case, simply remove it from the queue */
pw = g_queue_pop_head (passwd_handler->backend_stdin_queue);
g_free (pw);
/* Pop the IO queue, i.e. send new password */
io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
@ -679,7 +663,7 @@ passwd_authenticate (PasswdHandler *passwd_handler,
PasswdCallback cb,
const gpointer user_data)
{
GError *error = NULL;
g_autoptr(GError) error = NULL;
/* Don't stop if we've already started changing password */
if (passwd_handler->changing_password)
@ -701,8 +685,6 @@ passwd_authenticate (PasswdHandler *passwd_handler,
if (!spawn_passwd (passwd_handler, &error)) {
g_warning ("%s", error->message);
g_error_free (error);
return;
}
@ -717,8 +699,6 @@ passwd_change_password (PasswdHandler *passwd_handler,
PasswdCallback cb,
const gpointer user_data)
{
GError *error = NULL;
passwd_handler->changing_password = TRUE;
passwd_handler->new_password = new_password;
@ -736,14 +716,13 @@ passwd_change_password (PasswdHandler *passwd_handler,
* has occurred but it has not yet exited */
if (passwd_handler->backend_pid == -1) {
/* If it is not, re-run authentication */
g_autoptr(GError) error = NULL;
/* Spawn backend */
stop_passwd (passwd_handler);
if (!spawn_passwd (passwd_handler, &error)) {
g_warning ("%s", error->message);
g_error_free (error);
return FALSE;
}

View file

@ -72,9 +72,9 @@ icon_shape_data_free (gpointer user_data)
{
IconShapeData *data = user_data;
g_free (data->text);
g_free (data->placeholder_str);
g_object_unref (data->icon);
g_clear_pointer (&data->text, g_free);
g_clear_pointer (&data->placeholder_str, g_free);
g_clear_object (&data->icon);
g_free (data);
}
@ -91,8 +91,8 @@ icon_shape_renderer (cairo_t *cr,
if (GPOINTER_TO_UINT (attr->data) == data->placeholder) {
gdouble ascent;
gdouble height;
GdkPixbuf *pixbuf;
GtkIconInfo *info;
g_autoptr(GdkPixbuf) pixbuf = NULL;
g_autoptr(GtkIconInfo) info = NULL;
ascent = pango_units_to_double (attr->ink_rect.y);
height = pango_units_to_double (attr->ink_rect.height);
@ -101,13 +101,11 @@ icon_shape_renderer (cairo_t *cr,
(gint)height,
GTK_ICON_LOOKUP_FORCE_SIZE | GTK_ICON_LOOKUP_USE_BUILTIN);
pixbuf = gtk_icon_info_load_icon (info, NULL);
g_object_unref (info);
cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
cairo_reset_clip (cr);
gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y + ascent);
cairo_paint (cr);
g_object_unref (pixbuf);
}
}
@ -251,13 +249,12 @@ query_tooltip (GtkWidget *widget,
GtkTooltip *tooltip,
gpointer user_data)
{
gchar *tip;
if (GTK_ENTRY_ICON_SECONDARY == gtk_entry_get_icon_at_pos (GTK_ENTRY (widget), x, y)) {
g_autofree gchar *tip = NULL;
tip = gtk_entry_get_icon_tooltip_text (GTK_ENTRY (widget),
GTK_ENTRY_ICON_SECONDARY);
gtk_tooltip_set_text (tooltip, tip);
g_free (tip);
return TRUE;
}
@ -398,8 +395,8 @@ typedef struct {
static void
is_valid_username_data_free (isValidUsernameData *data)
{
g_free (data->username);
g_free (data->tip);
g_clear_pointer (&data->username, g_free);
g_clear_pointer (&data->tip, g_free);
g_free (data);
}
@ -420,7 +417,7 @@ is_valid_username_child_watch_cb (GPid pid,
gint status,
gpointer user_data)
{
GTask *task = G_TASK (user_data);
g_autoptr(GTask) task = G_TASK (user_data);
isValidUsernameData *data = g_task_get_task_data (task);
GError *error = NULL;
gboolean valid = FALSE;
@ -452,7 +449,6 @@ is_valid_username_child_watch_cb (GPid pid,
}
g_spawn_close_pid (pid);
g_object_unref (task);
}
void
@ -461,7 +457,7 @@ is_valid_username_async (const gchar *username,
GAsyncReadyCallback callback,
gpointer callback_data)
{
GTask *task;
g_autoptr(GTask) task = NULL;
isValidUsernameData *data;
gchar *argv[6];
GPid pid;
@ -476,15 +472,11 @@ is_valid_username_async (const gchar *username,
if (username == NULL || username[0] == '\0') {
g_task_return_boolean (task, FALSE);
g_object_unref (task);
return;
}
else if (strlen (username) > get_username_max_length ()) {
data->tip = g_strdup (_("The username is too long."));
g_task_return_boolean (task, FALSE);
g_object_unref (task);
return;
}
@ -518,12 +510,11 @@ is_valid_username_async (const gchar *username,
G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
NULL, NULL, &pid, &error)) {
g_task_return_error (task, error);
g_object_unref (task);
return;
}
g_child_watch_add (pid, (GChildWatchFunc) is_valid_username_child_watch_cb, task);
g_steal_pointer (&task);
}
gboolean
@ -707,40 +698,32 @@ void
set_user_icon_data (ActUser *user,
GdkPixbuf *pixbuf)
{
gchar *path;
g_autofree gchar *path = NULL;
gint fd;
GOutputStream *stream;
GError *error;
g_autoptr(GOutputStream) stream = NULL;
g_autoptr(GError) error = NULL;
path = g_build_filename (g_get_tmp_dir (), "gnome-control-center-user-icon-XXXXXX", NULL);
fd = g_mkstemp (path);
if (fd == -1) {
g_warning ("failed to create temporary file for image data");
g_free (path);
return;
}
stream = g_unix_output_stream_new (fd, TRUE);
error = NULL;
if (!gdk_pixbuf_save_to_stream (pixbuf, stream, "png", NULL, &error, NULL)) {
g_warning ("failed to save image: %s", error->message);
g_error_free (error);
g_object_unref (stream);
return;
}
g_object_unref (stream);
act_user_set_icon_file (user, path);
/* if we ever make the dbus call async, the g_remove call needs
* to wait for its completion
*/
g_remove (path);
g_free (path);
}
GdkPixbuf *