[telepathy-mission-control/master] mcd-account: delete secret string parameters from the keyring when removing the account
Jonny Lamb
jonny.lamb at collabora.co.uk
Mon Sep 14 11:09:17 PDT 2009
Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
src/mcd-account.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/src/mcd-account.c b/src/mcd-account.c
index a15f0ef..5d12527 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -856,6 +856,15 @@ _mcd_account_delete_write_conf_cb (McdAccountManager *account_manager,
g_slice_free (AccountDeleteData, data);
}
+#if ENABLE_GNOME_KEYRING
+static void
+keyring_delete_cb (GnomeKeyringResult result, gpointer user_data)
+{
+ gchar *name = (gchar *) user_data;
+ DEBUG ("Deleted secret parameter %s from keyring", name);
+}
+#endif
+
static void
_mcd_account_delete (McdAccount *account,
McdAccountDeleteCb callback,
@@ -902,6 +911,39 @@ _mcd_account_delete (McdAccount *account,
}
g_free (data_dir_str);
+#if ENABLE_GNOME_KEYRING
+ /* Delete any secret parameters from the keyring */
+ if (gnome_keyring_is_available ())
+ {
+ const TpConnectionManagerParam *params, *p;
+
+ params = mcd_manager_get_parameters (priv->manager, priv->protocol_name);
+
+ for (p = params; p->name != NULL; p++)
+ {
+ if (p->flags & TP_CONN_MGR_PARAM_FLAG_SECRET
+ && mc_param_type (p) == G_TYPE_STRING)
+ {
+ gchar *name;
+
+ name = g_strdup (p->name);
+ gnome_keyring_delete_password (&keyring_schema,
+ keyring_delete_cb,
+ name,
+ (GDestroyNotify) g_free,
+ "account", priv->unique_name,
+ "param", name,
+ NULL);
+ }
+ }
+ }
+ else
+ {
+ g_warning ("GNOME keyring not available: cannot delete secret "
+ "parameters from keyring");
+ }
+#endif
+
delete_data = g_slice_new0 (AccountDeleteData);
delete_data->account = account;
delete_data->callback = callback;
--
1.5.6.5
More information about the telepathy-commits
mailing list