[gnome-control-center] user-accounts: check for NULL on um_realm_object_get_common
- From: Ondrej Holy <oholy src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] user-accounts: check for NULL on um_realm_object_get_common
- Date: Wed, 25 Feb 2015 14:51:27 +0000 (UTC)
commit 3e6b741ad2cc749040ec073098aa9a7fb1a8c222
Author: Ondrej Holy <oholy redhat com>
Date: Wed Feb 25 14:31:28 2015 +0100
user-accounts: check for NULL on um_realm_object_get_common
um_realm_object_get_common can return NULL, which shouldn't be passed
into subsequent functions to avoid crashes.
https://bugzilla.gnome.org/show_bug.cgi?id=705351
panels/user-accounts/um-account-dialog.c | 8 ++++++++
panels/user-accounts/um-realm-manager.c | 10 ++++++----
panels/user-accounts/um-user-panel.c | 3 +++
3 files changed, 17 insertions(+), 4 deletions(-)
---
diff --git a/panels/user-accounts/um-account-dialog.c b/panels/user-accounts/um-account-dialog.c
index 7fb44ce..21a22aa 100644
--- a/panels/user-accounts/um-account-dialog.c
+++ b/panels/user-accounts/um-account-dialog.c
@@ -655,6 +655,8 @@ enterprise_add_realm (UmAccountDialog *self,
gchar *name;
common = um_realm_object_get_common (realm);
+ g_return_if_fail (common != NULL);
+
realm_name = um_realm_common_get_name (common);
/*
@@ -793,6 +795,12 @@ enterprise_permit_user_login (UmAccountDialog *self)
GVariant *options;
common = um_realm_object_get_common (self->selected_realm);
+ if (common != NULL) {
+ g_debug ("Failed to register account: failed to get d-bus interface");
+ show_error_dialog (self, _("Failed to register account"), NULL);
+ finish_action (self);
+ return;
+ }
login = um_realm_calculate_login (common, gtk_entry_get_text (self->enterprise_login));
g_return_if_fail (login != NULL);
diff --git a/panels/user-accounts/um-realm-manager.c b/panels/user-accounts/um-realm-manager.c
index 0849160..8a0a0e6 100644
--- a/panels/user-accounts/um-realm-manager.c
+++ b/panels/user-accounts/um-realm-manager.c
@@ -479,12 +479,14 @@ um_realm_is_configured (UmRealmObject *realm)
{
UmRealmCommon *common;
const gchar *configured;
- gboolean is;
+ gboolean is = FALSE;
common = um_realm_object_get_common (realm);
- configured = um_realm_common_get_configured (common);
- is = configured != NULL && !g_str_equal (configured, "");
- g_object_unref (common);
+ if (common != NULL) {
+ configured = um_realm_common_get_configured (common);
+ is = configured != NULL && !g_str_equal (configured, "");
+ g_object_unref (common);
+ }
return is;
}
diff --git a/panels/user-accounts/um-user-panel.c b/panels/user-accounts/um-user-panel.c
index d9f7be0..a16b3b3 100644
--- a/panels/user-accounts/um-user-panel.c
+++ b/panels/user-accounts/um-user-panel.c
@@ -524,6 +524,9 @@ find_matching_realm (UmRealmManager *realm_manager, const gchar *login)
gint i;
common = um_realm_object_get_common (l->data);
+ if (common == NULL)
+ continue;
+
permitted_logins = um_realm_common_get_permitted_logins (common);
for (i = 0; permitted_logins[i] != NULL; i++) {
if (g_strcmp0 (permitted_logins[i], login) == 0)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]