diff options
-rw-r--r-- | src/mcd-account-manager-default.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/mcd-account-manager-default.c b/src/mcd-account-manager-default.c index e156de1b..221c5d07 100644 --- a/src/mcd-account-manager-default.c +++ b/src/mcd-account-manager-default.c @@ -411,6 +411,10 @@ _set (const McpAccountStorage *self, /* if we have a keyring, secrets are segregated */ secret = mcp_account_manager_parameter_is_secret (am, account, key); + /* remove it from both sets, then re-add it to the right one if non-null */ + g_key_file_remove_key (amd->secrets, account, key, NULL); + g_key_file_remove_key (amd->keyfile, account, key, NULL); + if (val != NULL) { if (secret) @@ -418,13 +422,6 @@ _set (const McpAccountStorage *self, else g_key_file_set_value (amd->keyfile, account, key, val); } - else - { - if (secret) - g_key_file_remove_key (amd->secrets, account, key, NULL); - else - g_key_file_remove_key (amd->keyfile, account, key, NULL); - } /* if we removed the account before, it now exists again, so... */ g_hash_table_remove (amd->removed_accounts, account); @@ -561,8 +558,10 @@ _delete (const McpAccountStorage *self, g_key_file_remove_group (amd->keyfile, account, NULL); _delete_from_keyring (self, am, account, NULL); } - else if (mcp_account_manager_parameter_is_secret (am, account, key)) + else { + /* always delete from keyring, even if we didn't previously + * think it was secret - we might have been wrong */ _delete_from_keyring (self, am, account, key); } |