
gboolean
gnome_keyring_proto_decode_find_reply (GkrBuffer *buffer,
				       GnomeKeyringResult *result,
				       GList **list_out)
{
...
		if (!gnome_keyring_proto_get_utf8_string (buffer,
							  offset, &offset,
							  &found->keyring)) {
		}
		if (!gnome_keyring_proto_get_uint32 (buffer, offset, &offset, &found->item_id)) {
			return FALSE;
		}
		if (!gnome_keyring_proto_get_utf8_secret (buffer,
							  offset, &offset,
							  &found->secret)) {
			goto bail;
		}
...
[http://svn.gnome.org/viewcvs/gnome-keyring/trunk/library/gnome-keyring-proto.c?revision=655&view=markup]

=> latest (655) trunk is affected

--

diff -u gnome-keyring-2.19.4.1/debian/changelog gnome-keyring-2.19.4.1/debian/changelog
--- gnome-keyring-2.19.4.1/debian/changelog
+++ gnome-keyring-2.19.4.1/debian/changelog
@@ -1,3 +1,12 @@
+gnome-keyring (2.19.4.1-0ubuntu2) gutsy; urgency=low
+
+  * library/gnome-keyring-proto.c: fix broken error flow for
+    !gnome_keyring_proto_get_utf8_string(...) case as well as
+    memory leak for gnome_keyring_proto_get_uint32 error case
+    in gnome_keyring_proto_decode_find_reply.
+
+ -- Alexander Sack <asac@ubuntu.com>  Tue, 19 Jun 2007 09:08:35 +0200
+
 gnome-keyring (2.19.4.1-0ubuntu1) gutsy; urgency=low
 
   * New upstream version: 
only in patch2:
unchanged:
--- gnome-keyring-2.19.4.1.orig/library/gnome-keyring-proto.c
+++ gnome-keyring-2.19.4.1/library/gnome-keyring-proto.c
@@ -1116,9 +1116,10 @@
 		if (!gnome_keyring_proto_get_utf8_string (buffer,
 							  offset, &offset,
 							  &found->keyring)) {
+			goto bail;
 		}
 		if (!gnome_keyring_proto_get_uint32 (buffer, offset, &offset, &found->item_id)) {
-			return FALSE;
+			goto bail;
 		}
 		if (!gnome_keyring_proto_get_utf8_secret (buffer,
 							  offset, &offset,
