gnome-keyring r1211 - in trunk: . daemon daemon/keyrings library/tests
- From: nnielsen svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-keyring r1211 - in trunk: . daemon daemon/keyrings library/tests
- Date: Wed, 30 Jul 2008 15:19:35 +0000 (UTC)
Author: nnielsen
Date: Wed Jul 30 15:19:35 2008
New Revision: 1211
URL: http://svn.gnome.org/viewvc/gnome-keyring?rev=1211&view=rev
Log:
* daemon/gkr-daemon-ops.c:
* daemon/keyrings/gkr-keyring-binary.c:
* daemon/keyrings/gkr-keyring-item.c:
* daemon/keyrings/gkr-keyring-login.c:
* daemon/keyrings/gkr-keyrings.c:
* daemon/keyrings/gkr-keyring-textual.c:
* library/tests/unit-test-keyrings.c: Manage keyring and item
reference counting properly. Fixes bug #545456
Modified:
trunk/ChangeLog
trunk/daemon/gkr-daemon-ops.c
trunk/daemon/keyrings/gkr-keyring-binary.c
trunk/daemon/keyrings/gkr-keyring-item.c
trunk/daemon/keyrings/gkr-keyring-login.c
trunk/daemon/keyrings/gkr-keyring-textual.c
trunk/daemon/keyrings/gkr-keyrings.c
trunk/library/tests/unit-test-keyrings.c
Modified: trunk/daemon/gkr-daemon-ops.c
==============================================================================
--- trunk/daemon/gkr-daemon-ops.c (original)
+++ trunk/daemon/gkr-daemon-ops.c Wed Jul 30 15:19:35 2008
@@ -588,6 +588,9 @@
/* Set our newly created keyring as the default */
gkr_keyrings_set_default (keyring);
+
+ /* Let go of the initial reference to this object */
+ g_object_unref (keyring);
}
}
@@ -1171,6 +1174,7 @@
if (!item) {
item = gkr_keyring_item_create (keyring, type);
gkr_keyring_add_item (keyring, item);
+ g_object_unref (item);
}
/* Copy in item type flags */
@@ -1208,6 +1212,7 @@
GkrKeyringRequest *req)
{
char *keyring_name;
+ GkrKeyring *keyring;
GkrKeyringItem *item;
GnomeKeyringOpCode opcode;
guint32 item_id;
@@ -1231,8 +1236,9 @@
gkr_buffer_add_uint32 (result, res);
if (res == GNOME_KEYRING_RESULT_OK) {
if (item->keyring) {
- gkr_keyring_remove_item (item->keyring, item);
- gkr_keyring_save_to_disk (item->keyring);
+ keyring = item->keyring;
+ gkr_keyring_remove_item (keyring, item);
+ gkr_keyring_save_to_disk (keyring);
}
}
Modified: trunk/daemon/keyrings/gkr-keyring-binary.c
==============================================================================
--- trunk/daemon/keyrings/gkr-keyring-binary.c (original)
+++ trunk/daemon/keyrings/gkr-keyring-binary.c Wed Jul 30 15:19:35 2008
@@ -655,6 +655,7 @@
if (item == NULL) {
item = gkr_keyring_item_new (keyring, items[i].id, items[i].type);
gkr_keyring_add_item (keyring, item);
+ g_object_unref (item);
}
item->locked = locked;
Modified: trunk/daemon/keyrings/gkr-keyring-item.c
==============================================================================
--- trunk/daemon/keyrings/gkr-keyring-item.c (original)
+++ trunk/daemon/keyrings/gkr-keyring-item.c Wed Jul 30 15:19:35 2008
@@ -114,7 +114,6 @@
GkrKeyringItem *item = GKR_KEYRING_ITEM (obj);
if (item->keyring) {
- gkr_keyring_remove_item (item->keyring, item);
g_object_remove_weak_pointer (G_OBJECT (item->keyring),
(gpointer*)&(item->keyring));
item->keyring = NULL;
Modified: trunk/daemon/keyrings/gkr-keyring-login.c
==============================================================================
--- trunk/daemon/keyrings/gkr-keyring-login.c (original)
+++ trunk/daemon/keyrings/gkr-keyring-login.c Wed Jul 30 15:19:35 2008
@@ -237,6 +237,7 @@
if (!item) {
item = gkr_keyring_item_create (login, type);
gkr_keyring_add_item (login, item);
+ g_object_unref (item);
}
g_free (item->display_name);
Modified: trunk/daemon/keyrings/gkr-keyring-textual.c
==============================================================================
--- trunk/daemon/keyrings/gkr-keyring-textual.c (original)
+++ trunk/daemon/keyrings/gkr-keyring-textual.c Wed Jul 30 15:19:35 2008
@@ -431,6 +431,7 @@
if (item == NULL) {
item = gkr_keyring_item_new (keyring, id, 0);
gkr_keyring_add_item (keyring, item);
+ g_object_unref (item);
}
parse_item (file, item, (const gchar**)groups);
Modified: trunk/daemon/keyrings/gkr-keyrings.c
==============================================================================
--- trunk/daemon/keyrings/gkr-keyrings.c (original)
+++ trunk/daemon/keyrings/gkr-keyrings.c Wed Jul 30 15:19:35 2008
@@ -191,6 +191,7 @@
g_assert (!session_keyring);
session_keyring = gkr_keyring_new ("session", 0);
gkr_keyrings_add (session_keyring);
+ g_object_unref (session_keyring);
g_assert (!location_watch);
location_watch = gkr_location_watch_new (NULL, 0, "keyrings", "*.keyring", NULL);
@@ -355,12 +356,13 @@
/* Try and load the keyring */
if (gkr_location_test_file (location, G_FILE_TEST_IS_REGULAR)) {
keyring = gkr_keyring_new ("", location);
- if (gkr_keyring_update_from_disk (keyring))
+ if (gkr_keyring_update_from_disk (keyring)) {
gkr_keyrings_add (keyring);
- else
- keyring = NULL;
+ g_object_unref (keyring);
+ return keyring;
+ }
+
g_object_unref (keyring);
- return keyring;
}
return NULL;
Modified: trunk/library/tests/unit-test-keyrings.c
==============================================================================
--- trunk/library/tests/unit-test-keyrings.c (original)
+++ trunk/library/tests/unit-test-keyrings.c Wed Jul 30 15:19:35 2008
@@ -211,11 +211,11 @@
gnome_keyring_attribute_list_append_string (attrs, "dog", "woof");
gnome_keyring_attribute_list_append_string (attrs, "bird", "cheep");
gnome_keyring_attribute_list_append_string (attrs, "iguana", "");
- gnome_keyring_attribute_list_append_uint32 (attrs, "num", 3);
+ gnome_keyring_attribute_list_append_uint32 (attrs, "num", 19);
- /* Create teh item */
- res = gnome_keyring_item_create_sync (NULL, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "Barnyard", attrs, SECRET, FALSE, &id);
+ /* Create the item */
+ res = gnome_keyring_item_create_sync ("session", GNOME_KEYRING_ITEM_GENERIC_SECRET,
+ "Barnyard", attrs, SECRET, TRUE, &id);
CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
/* Now try to find it */
@@ -225,10 +225,10 @@
f = (GnomeKeyringFound*)found->data;
CuAssert(cu, "Wrong item found", f->item_id == id);
- CuAssert(cu, "Found in wrong keyring", strcmp (f->keyring, KEYRING_NAME) == 0);
+ CuAssert(cu, "Found in wrong keyring", strcmp (f->keyring, "session") == 0);
CuAssert(cu, "Wrong secret came back", strcmp (f->secret, SECRET) == 0);
- res = gnome_keyring_item_get_attributes_sync (NULL, id, &attrs);
+ res = gnome_keyring_item_get_attributes_sync ("session", id, &attrs);
CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
/* Make sure that dog does in fact woof */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]