summaryrefslogtreecommitdiff
path: root/pkcs11/xdg-store/gkm-xdg-trust.c
diff options
context:
space:
mode:
authorStef Walter <stefw@collabora.co.uk>2010-11-26 20:18:04 +0000
committerStef Walter <stefw@collabora.co.uk>2010-11-26 20:18:04 +0000
commit0dff075a4470947bdf36341955d37fd578957d39 (patch)
tree78e60383f29374ba5a4baebf41410bbbe5182537 /pkcs11/xdg-store/gkm-xdg-trust.c
parent5488f4ac054906a5b8ab53bdecca83865d672858 (diff)
downloadgnome-keyring-0dff075a4470947bdf36341955d37fd578957d39.tar.gz
[xdg-store] Trust assertions with same purpose/peer replace each other.
Diffstat (limited to 'pkcs11/xdg-store/gkm-xdg-trust.c')
-rw-r--r--pkcs11/xdg-store/gkm-xdg-trust.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/pkcs11/xdg-store/gkm-xdg-trust.c b/pkcs11/xdg-store/gkm-xdg-trust.c
index df3f8a80..3012f466 100644
--- a/pkcs11/xdg-store/gkm-xdg-trust.c
+++ b/pkcs11/xdg-store/gkm-xdg-trust.c
@@ -834,31 +834,27 @@ gkm_xdg_trust_create_for_assertion (GkmModule *module, GkmManager *manager,
return trust;
}
-GkmAssertion*
-gkm_xdg_trust_add_assertion (GkmXdgTrust *self, GkmAssertion *assertion,
+void
+gkm_xdg_trust_replace_assertion (GkmXdgTrust *self, GkmAssertion *assertion,
GkmTransaction *transaction)
{
GkmAssertion *previous;
GByteArray *key;
- g_return_val_if_fail (GKM_XDG_IS_TRUST (self), NULL);
- g_return_val_if_fail (GKM_IS_ASSERTION (assertion), NULL);
- g_return_val_if_fail (!transaction || GKM_IS_TRANSACTION (transaction), NULL);
+ g_return_if_fail (GKM_XDG_IS_TRUST (self));
+ g_return_if_fail (GKM_IS_ASSERTION (assertion));
+ g_return_if_fail (!transaction || GKM_IS_TRANSACTION (transaction));
/* Build up a key if we don't have one */
key = lookup_or_create_assertion_key (assertion);
- /* Check if we alraedy have the assertion */
+ /* Remove any previous assertion with this key */
previous = g_hash_table_lookup (self->pv->assertions, key);
-
- g_byte_array_unref (key);
-
- /* Just return previous assertion, don't add */
if (previous != NULL)
- return previous;
-
+ remove_assertion_from_trust (self, previous, transaction);
add_assertion_to_trust (self, assertion, transaction);
- return assertion;
+
+ g_byte_array_unref (key);
}
void