[evolution-data-server] [module-secret-monitor] Correct runtime warning from secret_service_search_sync()
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] [module-secret-monitor] Correct runtime warning from secret_service_search_sync()
- Date: Fri, 18 May 2018 08:28:50 +0000 (UTC)
commit 1784ad66533d424844cecf9ddf356aa0ec93d066
Author: Milan Crha <mcrha redhat com>
Date: Fri May 18 10:27:27 2018 +0200
[module-secret-monitor] Correct runtime warning from secret_service_search_sync()
The evolution-source-registry console could contain a runtime warning:
WARNING **: secret_service_search_sync: must specify at least one attribute to match
which was due to calling secret_service_search_sync() with an empty
hash table of attributes. Adding an 'eds-origin' attribute to the keys
and search for it helps to make the module do what it was supposed to do.
src/libedataserver/e-secret-store.c | 14 ++++++++------
src/modules/secret-monitor/module-secret-monitor.c | 13 ++++++-------
2 files changed, 14 insertions(+), 13 deletions(-)
---
diff --git a/src/libedataserver/e-secret-store.c b/src/libedataserver/e-secret-store.c
index d28107a..96c8dbf 100644
--- a/src/libedataserver/e-secret-store.c
+++ b/src/libedataserver/e-secret-store.c
@@ -251,14 +251,15 @@ e_win32_secret_delete_secret_sync (const gchar *uid,
#else /* G_OS_WIN32 */
-#define KEYRING_ITEM_ATTRIBUTE_NAME "e-source-uid"
+#define KEYRING_ITEM_ATTRIBUTE_UID "e-source-uid"
+#define KEYRING_ITEM_ATTRIBUTE_ORIGIN "eds-origin"
static SecretSchema password_schema = {
"org.gnome.Evolution.Data.Source",
SECRET_SCHEMA_DONT_MATCH_NAME,
{
- { KEYRING_ITEM_ATTRIBUTE_NAME,
- SECRET_SCHEMA_ATTRIBUTE_STRING },
+ { KEYRING_ITEM_ATTRIBUTE_UID, SECRET_SCHEMA_ATTRIBUTE_STRING },
+ { KEYRING_ITEM_ATTRIBUTE_ORIGIN, SECRET_SCHEMA_ATTRIBUTE_STRING },
{ NULL, 0 }
}
};
@@ -314,7 +315,8 @@ e_secret_store_store_sync (const gchar *uid,
&password_schema,
collection, label, secret,
cancellable, error,
- KEYRING_ITEM_ATTRIBUTE_NAME, uid,
+ KEYRING_ITEM_ATTRIBUTE_UID, uid,
+ KEYRING_ITEM_ATTRIBUTE_ORIGIN, PACKAGE,
NULL);
#endif
@@ -359,7 +361,7 @@ e_secret_store_lookup_sync (const gchar *uid,
temp = secret_password_lookup_sync (
&password_schema,
cancellable, &local_error,
- KEYRING_ITEM_ATTRIBUTE_NAME, uid,
+ KEYRING_ITEM_ATTRIBUTE_UID, uid,
NULL);
#endif
@@ -413,7 +415,7 @@ e_secret_store_delete_sync (const gchar *uid,
secret_password_clear_sync (
&password_schema,
cancellable, &local_error,
- KEYRING_ITEM_ATTRIBUTE_NAME, uid,
+ KEYRING_ITEM_ATTRIBUTE_UID, uid,
NULL);
#endif
diff --git a/src/modules/secret-monitor/module-secret-monitor.c
b/src/modules/secret-monitor/module-secret-monitor.c
index 817c401..7987962 100644
--- a/src/modules/secret-monitor/module-secret-monitor.c
+++ b/src/modules/secret-monitor/module-secret-monitor.c
@@ -53,15 +53,16 @@ struct _ESecretMonitorClass {
/* XXX ESource's SecretSchema copied here for searching.
* Maybe add a searching function to e-source.[ch]? */
-#define KEYRING_ITEM_ATTRIBUTE_NAME "e-source-uid"
+#define KEYRING_ITEM_ATTRIBUTE_UID "e-source-uid"
+#define KEYRING_ITEM_ATTRIBUTE_ORIGIN "eds-origin"
#define KEYRING_ITEM_DISPLAY_FORMAT "Evolution Data Source '%s'"
static SecretSchema password_schema = {
"org.gnome.Evolution.Data.Source",
SECRET_SCHEMA_DONT_MATCH_NAME,
{
- { KEYRING_ITEM_ATTRIBUTE_NAME,
- SECRET_SCHEMA_ATTRIBUTE_STRING },
+ { KEYRING_ITEM_ATTRIBUTE_UID, SECRET_SCHEMA_ATTRIBUTE_STRING },
+ { KEYRING_ITEM_ATTRIBUTE_ORIGIN, SECRET_SCHEMA_ATTRIBUTE_STRING },
{ NULL, 0 }
}
};
@@ -102,9 +103,8 @@ secret_monitor_scan_secrets_thread (gpointer user_data)
server = E_SOURCE_REGISTRY_SERVER (user_data);
- /* XXX secret_service_search_sync() won't accept NULL for its
- * 'attributes' parameter, so give it an empty hash table. */
attributes = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (attributes, (gpointer) KEYRING_ITEM_ATTRIBUTE_ORIGIN, (gpointer) PACKAGE);
/* List all items under our custom SecretSchema. */
list = secret_service_search_sync (
@@ -126,8 +126,7 @@ secret_monitor_scan_secrets_thread (gpointer user_data)
attributes = secret_item_get_attributes (item);
- uid = g_hash_table_lookup (
- attributes, KEYRING_ITEM_ATTRIBUTE_NAME);
+ uid = g_hash_table_lookup (attributes, KEYRING_ITEM_ATTRIBUTE_UID);
/* No UID attribute? Best leave it alone. */
if (uid == NULL)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]