[telepathy-glib/telepathy-glib-0.8] TpConnectionManager: extend the "(^|-)password" special-case to GetParameters(), and debug whenever it is used
Simon McVittie
simon.mcvittie at collabora.co.uk
Thu Oct 15 09:12:43 PDT 2009
Current Telepathy connection managers seem to all say that "password" is
secret in their .manager file, but not in their source code. As a result,
if you delete all your .manager files, MC no longer retrieves your
passwords from gnome-keyring, and all your accounts get marked as
invalid :-(
---
telepathy-glib/connection-manager.c | 31 ++++++++++++++++++++++---------
1 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/telepathy-glib/connection-manager.c b/telepathy-glib/connection-manager.c
index 193e3a0..6e573ee 100644
--- a/telepathy-glib/connection-manager.c
+++ b/telepathy-glib/connection-manager.c
@@ -454,6 +454,15 @@ tp_connection_manager_got_parameters (TpConnectionManager *self,
DEBUG ("\tParam flags: 0x%x", param->flags);
DEBUG ("\tParam sig: %s", param->dbus_signature);
+ if ((!tp_strdiff (param->name, "password") ||
+ g_str_has_suffix (param->name, "-password")) &&
+ (param->flags & TP_CONN_MGR_PARAM_FLAG_SECRET) == 0)
+ {
+ DEBUG ("\tTreating as secret due to its name (please fix %s)",
+ self->name);
+ param->flags |= TP_CONN_MGR_PARAM_FLAG_SECRET;
+ }
+
#ifdef ENABLE_DEBUG
{
gchar *repr = g_strdup_value_contents (&(param->default_value));
@@ -976,8 +985,9 @@ parse_default_value (GValue *value,
}
static GPtrArray *
-tp_connection_manager_read_file (const gchar *filename,
- GError **error)
+tp_connection_manager_read_file (const gchar *cm_name,
+ const gchar *filename,
+ GError **error)
{
GKeyFile *file;
gchar **groups, **group;
@@ -1061,12 +1071,6 @@ tp_connection_manager_read_file (const gchar *filename,
param->dbus_signature = g_strdup (strv[0]);
- if (!tp_strdiff (param->name, "password") ||
- g_str_has_suffix (param->name, "-password"))
- {
- param->flags |= TP_CONN_MGR_PARAM_FLAG_SECRET;
- }
-
for (iter = strv + 1; *iter != NULL; iter++)
{
if (!tp_strdiff (*iter, "required"))
@@ -1081,6 +1085,15 @@ tp_connection_manager_read_file (const gchar *filename,
g_strfreev (strv);
+ if ((!tp_strdiff (param->name, "password") ||
+ g_str_has_suffix (param->name, "-password")) &&
+ (param->flags & TP_CONN_MGR_PARAM_FLAG_SECRET) == 0)
+ {
+ DEBUG ("\tTreating %s as secret due to its name (please "
+ "fix %s)", param->name, cm_name);
+ param->flags |= TP_CONN_MGR_PARAM_FLAG_SECRET;
+ }
+
def = g_strdup_printf ("default-%s", param->name);
value = g_key_file_get_string (file, *group, def, NULL);
@@ -1144,7 +1157,7 @@ tp_connection_manager_idle_read_manager_file (gpointer data)
{
GError *error = NULL;
GPtrArray *protocols = tp_connection_manager_read_file (
- self->priv->manager_file, &error);
+ self->name, self->priv->manager_file, &error);
DEBUG ("Read %s", self->priv->manager_file);
--
1.5.6.5
More information about the telepathy-commits
mailing list