summaryrefslogtreecommitdiffstats
path: root/security/gnome-keyring
diff options
context:
space:
mode:
authorkwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059>2014-01-17 23:34:10 +0800
committerkwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059>2014-01-17 23:34:10 +0800
commit640ab1d4423998c1762f7f8f7e68a86ad0984cb5 (patch)
treee939ee12b70bfc10853e39e6ea1bffd398b116d3 /security/gnome-keyring
parentd6f19a093d11360519e740ef839ac40b7905f61e (diff)
downloadmarcuscom-ports-640ab1d4423998c1762f7f8f7e68a86ad0984cb5.tar
marcuscom-ports-640ab1d4423998c1762f7f8f7e68a86ad0984cb5.tar.gz
marcuscom-ports-640ab1d4423998c1762f7f8f7e68a86ad0984cb5.tar.bz2
marcuscom-ports-640ab1d4423998c1762f7f8f7e68a86ad0984cb5.tar.lz
marcuscom-ports-640ab1d4423998c1762f7f8f7e68a86ad0984cb5.tar.xz
marcuscom-ports-640ab1d4423998c1762f7f8f7e68a86ad0984cb5.tar.zst
marcuscom-ports-640ab1d4423998c1762f7f8f7e68a86ad0984cb5.zip
Update keyring to 3.6 from the gnome-keyring3 port.
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@18975 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'security/gnome-keyring')
-rw-r--r--security/gnome-keyring/Makefile39
-rw-r--r--security/gnome-keyring/distinfo4
-rw-r--r--security/gnome-keyring/files/patch-configure22
-rw-r--r--security/gnome-keyring/files/patch-daemon_control_gkd-control-client.c11
-rw-r--r--security/gnome-keyring/files/patch-egg_egg-asn1x.c13
-rw-r--r--security/gnome-keyring/files/patch-egg_egg-secure-memory.c959
-rw-r--r--security/gnome-keyring/files/patch-egg_egg-secure-memory.h75
-rw-r--r--security/gnome-keyring/files/patch-egg_egg-unix-credentials.c44
-rw-r--r--security/gnome-keyring/files/patch-egg_tests_test-secmem.c66
-rw-r--r--security/gnome-keyring/files/patch-gcr_gcr-certificate.c11
-rw-r--r--security/gnome-keyring/files/patch-pkcs11_rpc-layer_gkm-rpc-dispatch.c11
-rw-r--r--security/gnome-keyring/pkg-plist123
12 files changed, 1152 insertions, 226 deletions
diff --git a/security/gnome-keyring/Makefile b/security/gnome-keyring/Makefile
index daec9b2f2..93424878e 100644
--- a/security/gnome-keyring/Makefile
+++ b/security/gnome-keyring/Makefile
@@ -3,31 +3,46 @@
# $MCom$
PORTNAME= gnome-keyring
-PORTVERSION= 2.32.1
-PORTREVISION= 3
+PORTVERSION= 3.6.2
CATEGORIES= security gnome
MASTER_SITES= GNOME
-DIST_SUBDIR= gnome2
+DIST_SUBDIR= gnome3
MAINTAINER= gnome@FreeBSD.org
COMMENT= Program that keeps passwords and other secrets
-LIB_DEPENDS= libtasn1.so:${PORTSDIR}/security/libtasn1 \
- libgnome-keyring.so:${PORTSDIR}/security/libgnome-keyring
+BUILD_DEPENDS= ${LOCALBASE}/share/certs/ca-root-nss.crt:${PORTSDIR}/security/ca_root_nss \
+ gcr>=3.5.3:${PORTSDIR}/security/gcr
+LIB_DEPENDS= libgnome-keyring.so:${PORTSDIR}/security/libgnome-keyring \
+ libdbus-1.so:${PORTSDIR}/devel/dbus \
+ libgcr-3.so:${PORTSDIR}/security/gcr \
+ libtasn1.so:${PORTSDIR}/security/libtasn1 \
+ libp11-kit.so:${PORTSDIR}/security/p11-kit \
+ libgcrypt.so:${PORTSDIR}/security/libgcrypt
RUN_DEPENDS= ${LOCALBASE}/share/certs/ca-root-nss.crt:${PORTSDIR}/security/ca_root_nss
-CONFLICTS= gnome-keyring-3.[0-9]* gcr-3.[0-9]*
-
-USE_BZIP2= yes
-USE_GNOME= gnomeprefix gtk20 ltverhack intlhack
+USE_XZ= yes
+USE_GNOME= gnomeprefix gtk30 ltverhack intlhack
USES= gettext gmake pathfix pkgconfig
+INSTALLS_ICONS= yes
GNU_CONFIGURE= yes
USE_LDCONFIG= yes
CONFIGURE_ARGS= --with-pam-dir="${PREFIX}/lib" \
- --with-root-certs="${LOCALBASE}/share/certs/ca-root-nss.crt"
+ --with-root-certs=${LOCALBASE}/share/certs
CPPFLAGS+= -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib
-GLIB_SCHEMAS= org.gnome.crypto.cache.gschema.xml \
- org.gnome.crypto.pgp.gschema.xml
+GLIB_SCHEMAS= org.gnome.crypto.cache.gschema.xml
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|make --version|${GMAKE} --version|g' \
+ ${WRKSRC}/configure
+ @${REINPLACE_CMD} -e 's|gnome-keyring-module|gnome-keyring.module|g' \
+ ${WRKSRC}/pkcs11/rpc-layer/Makefile.in \
+ ${WRKSRC}/configure
+
+post-install:
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/gnome-keyring/devel/*.so
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/pkcs11/gnome-keyring-pkcs11.so
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/pam_gnome_keyring.so
.include <bsd.port.mk>
diff --git a/security/gnome-keyring/distinfo b/security/gnome-keyring/distinfo
index 2774e0cb2..c3a25a259 100644
--- a/security/gnome-keyring/distinfo
+++ b/security/gnome-keyring/distinfo
@@ -1,2 +1,2 @@
-SHA256 (gnome2/gnome-keyring-2.32.1.tar.bz2) = 31fecec1430a97f59a6159a5a2ea8d6a1b44287f1e9e595b3594df46bf7f18f9
-SIZE (gnome2/gnome-keyring-2.32.1.tar.bz2) = 1619245
+SHA256 (gnome3/gnome-keyring-3.6.2.tar.xz) = ae60558d60171325ddd90603328393d35d7b560a70b7ab45c4d2718d01130cd6
+SIZE (gnome3/gnome-keyring-3.6.2.tar.xz) = 1139836
diff --git a/security/gnome-keyring/files/patch-configure b/security/gnome-keyring/files/patch-configure
deleted file mode 100644
index 7e8ec000a..000000000
--- a/security/gnome-keyring/files/patch-configure
+++ /dev/null
@@ -1,22 +0,0 @@
---- configure.orig 2010-09-19 12:45:34.000000000 +0000
-+++ configure 2010-09-19 12:50:50.000000000 +0000
-@@ -14454,8 +14454,8 @@
- .SECONDARY: $(gsettings_SCHEMAS)
-
- gsettings__base_list = \
-- sed "$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g" | \
-- sed "$$!N;$$!N;$$!N;$$!N;s/\n/ /g"
-+ sed '\''$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g'\'' | \
-+ sed '\''$$!N;$$!N;$$!N;$$!N;s/\n/ /g'\''
-
- install-gsettings-schemas: $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file)
- @$(NORMAL_INSTALL)
-@@ -15058,7 +15058,7 @@
-
- pam_status="no"
- if test "$enable_pam" != "no"; then
-- for ac_header in security/pam_modules.h pam/pam_modules.h
-+ for ac_header in security/pam_modules.h
- do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
- ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
diff --git a/security/gnome-keyring/files/patch-daemon_control_gkd-control-client.c b/security/gnome-keyring/files/patch-daemon_control_gkd-control-client.c
deleted file mode 100644
index 6cdb0ca6a..000000000
--- a/security/gnome-keyring/files/patch-daemon_control_gkd-control-client.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- daemon/control/gkd-control-client.c.orig 2009-12-21 18:43:16.000000000 -0500
-+++ daemon/control/gkd-control-client.c 2009-12-21 18:44:17.000000000 -0500
-@@ -31,6 +31,8 @@
- #include <errno.h>
- #include <fcntl.h>
-
-+#include <string.h>
-+#include <sys/stat.h>
- #include <sys/socket.h>
- #include <sys/types.h>
- #include <sys/un.h>
diff --git a/security/gnome-keyring/files/patch-egg_egg-asn1x.c b/security/gnome-keyring/files/patch-egg_egg-asn1x.c
deleted file mode 100644
index 30828f3f6..000000000
--- a/security/gnome-keyring/files/patch-egg_egg-asn1x.c
+++ /dev/null
@@ -1,13 +0,0 @@
---- egg/egg-asn1x.c.orig 2010-09-04 12:08:41.000000000 +0200
-+++ egg/egg-asn1x.c 2010-09-04 12:10:05.000000000 +0200
-@@ -1988,8 +1988,8 @@ anode_write_integer_ulong (gulong value,
- guchar buf[sizeof (gulong)];
- gint bytes, i, off;
-
-- for (i = 0; i < sizeof (ulong); ++i) {
-- off = sizeof (ulong) - (i + 1);
-+ for (i = 0; i < sizeof (gulong); ++i) {
-+ off = sizeof (gulong) - (i + 1);
- buf[i] = (value >> (off * 8)) & 0xFF;
- }
-
diff --git a/security/gnome-keyring/files/patch-egg_egg-secure-memory.c b/security/gnome-keyring/files/patch-egg_egg-secure-memory.c
new file mode 100644
index 000000000..a3874cbfe
--- /dev/null
+++ b/security/gnome-keyring/files/patch-egg_egg-secure-memory.c
@@ -0,0 +1,959 @@
+--- egg/egg-secure-memory.c.orig Wed Sep 26 10:28:35 2012
++++ egg/egg-secure-memory.c Sat Oct 27 14:46:28 2012
+@@ -22,8 +22,8 @@
+ */
+
+ /*
+- * IMPORTANT: This is pure vanila standard C, no glib. We need this
+- * because certain consumers of this protocol need to be built
++ * IMPORTANT: This is pure vanila standard C, no glib. We need this
++ * because certain consumers of this protocol need to be built
+ * without linking in any special libraries. ie: the PKCS#11 module.
+ */
+
+@@ -48,8 +48,8 @@
+
+ #define DEBUG_SECURE_MEMORY 0
+
+-#if DEBUG_SECURE_MEMORY
+-#define DEBUG_ALLOC(msg, n) fprintf(stderr, "%s %lu bytes\n", msg, n);
++#if DEBUG_SECURE_MEMORY
++#define DEBUG_ALLOC(msg, n) fprintf(stderr, "%s %lu bytes\n", msg, n);
+ #else
+ #define DEBUG_ALLOC(msg, n)
+ #endif
+@@ -59,8 +59,8 @@
+ /* Use our own assert to guarantee no glib allocations */
+ #ifndef ASSERT
+ #ifdef G_DISABLE_ASSERT
+-#define ASSERT(x)
+-#else
++#define ASSERT(x)
++#else
+ #define ASSERT(x) assert(x)
+ #endif
+ #endif
+@@ -74,18 +74,18 @@
+ static int show_warning = 1;
+ int egg_secure_warnings = 1;
+
+-/*
+- * We allocate all memory in units of sizeof(void*). This
++/*
++ * We allocate all memory in units of sizeof(void*). This
+ * is our definition of 'word'.
+ */
+ typedef void* word_t;
+
+-/* The amount of extra words we can allocate */
++/* The amount of extra words we can allocate */
+ #define WASTE 4
+
+-/*
+- * Track allocated memory or a free block. This structure is not stored
+- * in the secure memory area. It is allocated from a pool of other
++/*
++ * Track allocated memory or a free block. This structure is not stored
++ * in the secure memory area. It is allocated from a pool of other
+ * memory. See meta_pool_xxx ().
+ */
+ typedef struct _Cell {
+@@ -97,7 +97,7 @@ typedef struct _Cell {
+ struct _Cell *prev; /* Previous in memory ring */
+ } Cell;
+
+-/*
++/*
+ * A block of secure memory. This structure is the header in that block.
+ */
+ typedef struct _Block {
+@@ -130,20 +130,20 @@ unused_pop (void **stack)
+ ptr = *stack;
+ *stack = *(void**)ptr;
+ return ptr;
+-
++
+ }
+
+ static inline void*
+ unused_peek (void **stack)
+ {
+ ASSERT (stack);
+- return *stack;
++ return *stack;
+ }
+
+ /* -----------------------------------------------------------------------------
+ * POOL META DATA ALLOCATION
+- *
+- * A pool for memory meta data. We allocate fixed size blocks. There are actually
++ *
++ * A pool for memory meta data. We allocate fixed size blocks. There are actually
+ * two different structures stored in this pool: Cell and Block. Cell is allocated
+ * way more often, and is bigger so we just allocate that size for both.
+ */
+@@ -185,7 +185,7 @@ pool_alloc (void)
+ if (unused_peek (&pool->unused))
+ break;
+ }
+-
++
+ /* Create a new pool */
+ if (pool == NULL) {
+ len = getpagesize () * 2;
+@@ -205,7 +205,7 @@ pool_alloc (void)
+ pool->n_items = (len - sizeof (Pool)) / sizeof (Item);
+ for (i = 0; i < pool->n_items; ++i)
+ unused_push (&pool->unused, pool->items + i);
+-
++
+ #ifdef WITH_VALGRIND
+ VALGRIND_CREATE_MEMPOOL(pool, 0, 0);
+ #endif
+@@ -227,9 +227,9 @@ pool_free (void* item)
+ {
+ Pool *pool, **at;
+ char *ptr, *beg, *end;
+-
++
+ ptr = item;
+-
++
+ /* Find which block this one belongs to */
+ for (at = (Pool **)&EGG_SECURE_GLOBALS.pool_data, pool = *at;
+ pool != NULL; at = &pool->next, pool = *at) {
+@@ -275,17 +275,17 @@ pool_valid (void* item)
+ {
+ Pool *pool;
+ char *ptr, *beg, *end;
+-
++
+ ptr = item;
+-
++
+ /* Find which block this one belongs to */
+ for (pool = EGG_SECURE_GLOBALS.pool_data; pool; pool = pool->next) {
+ beg = (char*)pool->items;
+ end = (char*)pool + pool->length - sizeof (Item);
+- if (ptr >= beg && ptr <= end)
++ if (ptr >= beg && ptr <= end)
+ return (pool->used && (ptr - beg) % sizeof (Item) == 0);
+ }
+-
++
+ return 0;
+ }
+
+@@ -293,9 +293,9 @@ pool_valid (void* item)
+
+ /* -----------------------------------------------------------------------------
+ * SEC ALLOCATION
+- *
++ *
+ * Each memory cell begins and ends with a pointer to its metadata. These are also
+- * used as guards or red zones. Since they're treated as redzones by valgrind we
++ * used as guards or red zones. Since they're treated as redzones by valgrind we
+ * have to jump through a few hoops before reading and/or writing them.
+ */
+
+@@ -315,11 +315,11 @@ sec_write_guards (Cell *cell)
+
+ ((void**)cell->words)[0] = (void*)cell;
+ ((void**)cell->words)[cell->n_words - 1] = (void*)cell;
+-
++
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_NOACCESS (cell->words, sizeof (word_t));
+ VALGRIND_MAKE_MEM_NOACCESS (cell->words + cell->n_words - 1, sizeof (word_t));
+-#endif
++#endif
+ }
+
+ static inline void
+@@ -327,16 +327,16 @@ sec_check_guards (Cell *cell)
+ {
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_DEFINED (cell->words, sizeof (word_t));
+- VALGRIND_MAKE_MEM_DEFINED (cell->words + cell->n_words - 1, sizeof (word_t));
+-#endif
+-
++ VALGRIND_MAKE_MEM_DEFINED (cell->words + cell->n_words - 1, sizeof (word_t));
++#endif
++
+ ASSERT(((void**)cell->words)[0] == (void*)cell);
+ ASSERT(((void**)cell->words)[cell->n_words - 1] == (void*)cell);
+-
++
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_NOACCESS (cell->words, sizeof (word_t));
+ VALGRIND_MAKE_MEM_NOACCESS (cell->words + cell->n_words - 1, sizeof (word_t));
+-#endif
++#endif
+ }
+
+ static void
+@@ -347,9 +347,9 @@ sec_insert_cell_ring (Cell **ring, Cell *cell)
+ ASSERT (cell != *ring);
+ ASSERT (cell->next == NULL);
+ ASSERT (cell->prev == NULL);
+-
+- /* Insert back into the mix of available memory */
+- if (*ring) {
++
++ /* Insert back into the mix of available memory */
++ if (*ring) {
+ cell->next = (*ring)->next;
+ cell->prev = *ring;
+ cell->next->prev = cell;
+@@ -358,7 +358,7 @@ sec_insert_cell_ring (Cell **ring, Cell *cell)
+ cell->next = cell;
+ cell->prev = cell;
+ }
+-
++
+ *ring = cell;
+ ASSERT (cell->next->prev == cell);
+ ASSERT (cell->prev->next == cell);
+@@ -391,7 +391,7 @@ sec_remove_cell_ring (Cell **ring, Cell *cell)
+ cell->next->prev = cell->prev;
+ cell->prev->next = cell->next;
+ cell->next = cell->prev = NULL;
+-
++
+ ASSERT (*ring != cell);
+ }
+
+@@ -440,10 +440,10 @@ static Cell*
+ sec_neighbor_before (Block *block, Cell *cell)
+ {
+ word_t *word;
+-
++
+ ASSERT (cell);
+ ASSERT (block);
+-
++
+ word = cell->words - 1;
+ if (!sec_is_valid_word (block, word))
+ return NULL;
+@@ -451,7 +451,7 @@ sec_neighbor_before (Block *block, Cell *cell)
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_DEFINED (word, sizeof (word_t));
+ #endif
+-
++
+ cell = *word;
+ sec_check_guards (cell);
+
+@@ -462,14 +462,14 @@ sec_neighbor_before (Block *block, Cell *cell)
+ return cell;
+ }
+
+-static Cell*
++static Cell*
+ sec_neighbor_after (Block *block, Cell *cell)
+ {
+ word_t *word;
+-
++
+ ASSERT (cell);
+ ASSERT (block);
+-
++
+ word = cell->words + cell->n_words;
+ if (!sec_is_valid_word (block, word))
+ return NULL;
+@@ -480,7 +480,7 @@ sec_neighbor_after (Block *block, Cell *cell)
+
+ cell = *word;
+ sec_check_guards (cell);
+-
++
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_NOACCESS (word, sizeof (word_t));
+ #endif
+@@ -496,7 +496,7 @@ sec_alloc (Block *block,
+ Cell *cell, *other;
+ size_t n_words;
+ void *memory;
+-
++
+ ASSERT (block);
+ ASSERT (length);
+ ASSERT (tag);
+@@ -504,16 +504,16 @@ sec_alloc (Block *block,
+ if (!block->unused_cells)
+ return NULL;
+
+- /*
+- * Each memory allocation is aligned to a pointer size, and
++ /*
++ * Each memory allocation is aligned to a pointer size, and
+ * then, sandwidched between two pointers to its meta data.
+ * These pointers also act as guards.
+ *
+- * We allocate memory in units of sizeof (void*)
++ * We allocate memory in units of sizeof (void*)
+ */
+-
++
+ n_words = sec_size_to_words (length) + 2;
+-
++
+ /* Look for a cell of at least our required size */
+ cell = block->unused_cells;
+ while (cell->n_words < n_words) {
+@@ -523,7 +523,7 @@ sec_alloc (Block *block,
+ break;
+ }
+ }
+-
++
+ if (!cell)
+ return NULL;
+
+@@ -532,7 +532,7 @@ sec_alloc (Block *block,
+ ASSERT (cell->prev);
+ ASSERT (cell->words);
+ sec_check_guards (cell);
+-
++
+ /* Steal from the cell if it's too long */
+ if (cell->n_words > n_words + WASTE) {
+ other = pool_alloc ();
+@@ -542,13 +542,13 @@ sec_alloc (Block *block,
+ other->words = cell->words;
+ cell->n_words -= n_words;
+ cell->words += n_words;
+-
++
+ sec_write_guards (other);
+ sec_write_guards (cell);
+-
++
+ cell = other;
+ }
+-
++
+ if (cell->next)
+ sec_remove_cell_ring (&block->unused_cells, cell);
+
+@@ -557,11 +557,11 @@ sec_alloc (Block *block,
+ cell->requested = length;
+ sec_insert_cell_ring (&block->used_cells, cell);
+ memory = sec_cell_to_memory (cell);
+-
++
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_UNDEFINED (memory, length);
+ #endif
+-
++
+ return memset (memory, 0, length);
+ }
+
+@@ -570,13 +570,13 @@ sec_free (Block *block, void *memory)
+ {
+ Cell *cell, *other;
+ word_t *word;
+-
++
+ ASSERT (block);
+ ASSERT (memory);
+-
++
+ word = memory;
+ --word;
+-
++
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_DEFINED (word, sizeof (word_t));
+ #endif
+@@ -600,39 +600,39 @@ sec_free (Block *block, void *memory)
+ /* Remove from the used cell ring */
+ sec_remove_cell_ring (&block->used_cells, cell);
+
+- /* Find previous unallocated neighbor, and merge if possible */
+- other = sec_neighbor_before (block, cell);
+- if (other && other->requested == 0) {
+- ASSERT (other->tag == NULL);
+- ASSERT (other->next && other->prev);
+- other->n_words += cell->n_words;
+- sec_write_guards (other);
+- pool_free (cell);
+- cell = other;
+- }
+-
+- /* Find next unallocated neighbor, and merge if possible */
+- other = sec_neighbor_after (block, cell);
+- if (other && other->requested == 0) {
+- ASSERT (other->tag == NULL);
+- ASSERT (other->next && other->prev);
+- other->n_words += cell->n_words;
+- other->words = cell->words;
+- if (cell->next)
+- sec_remove_cell_ring (&block->unused_cells, cell);
+- sec_write_guards (other);
+- pool_free (cell);
+- cell = other;
+- }
++ /* Find previous unallocated neighbor, and merge if possible */
++ other = sec_neighbor_before (block, cell);
++ if (other && other->requested == 0) {
++ ASSERT (other->tag == NULL);
++ ASSERT (other->next && other->prev);
++ other->n_words += cell->n_words;
++ sec_write_guards (other);
++ pool_free (cell);
++ cell = other;
++ }
+
+- /* Add to the unused list if not already there */
+- if (!cell->next)
+- sec_insert_cell_ring (&block->unused_cells, cell);
++ /* Find next unallocated neighbor, and merge if possible */
++ other = sec_neighbor_after (block, cell);
++ if (other && other->requested == 0) {
++ ASSERT (other->tag == NULL);
++ ASSERT (other->next && other->prev);
++ other->n_words += cell->n_words;
++ other->words = cell->words;
++ if (cell->next)
++ sec_remove_cell_ring (&block->unused_cells, cell);
++ sec_write_guards (other);
++ pool_free (cell);
++ cell = other;
++ }
+
+- cell->tag = NULL;
+- cell->requested = 0;
+- --block->n_used;
+- return NULL;
++ /* Add to the unused list if not already there */
++ if (!cell->next)
++ sec_insert_cell_ring (&block->unused_cells, cell);
++
++ cell->tag = NULL;
++ cell->requested = 0;
++ --block->n_used;
++ return NULL;
+ }
+
+ static void
+@@ -683,7 +683,7 @@ sec_realloc (Block *block,
+ /* Dig out where the meta should be */
+ word = memory;
+ --word;
+-
++
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_DEFINED (word, sizeof (word_t));
+ #endif
+@@ -691,7 +691,7 @@ sec_realloc (Block *block,
+ ASSERT (sec_is_valid_word (block, word));
+ ASSERT (pool_valid (*word));
+ cell = *word;
+-
++
+ /* Validate that it's actually for real */
+ sec_check_guards (cell);
+ ASSERT (cell->requested > 0);
+@@ -710,17 +710,17 @@ sec_realloc (Block *block,
+ cell->requested = length;
+ alloc = sec_cell_to_memory (cell);
+
+- /*
++ /*
+ * Even though we may be reusing the same cell, that doesn't
+ * mean that the allocation is shrinking. It could have shrunk
+- * and is now expanding back some.
+- */
++ * and is now expanding back some.
++ */
+ if (length < valid)
+ sec_clear_undefined (alloc, length, valid);
+
+ return alloc;
+ }
+-
++
+ /* Need braaaaaiiiiiinsss... */
+ while (cell->n_words < n_words) {
+
+@@ -728,7 +728,7 @@ sec_realloc (Block *block,
+ other = sec_neighbor_after (block, cell);
+ if (!other || other->requested != 0)
+ break;
+-
++
+ /* Eat the whole neighbor if not too big */
+ if (n_words - cell->n_words + WASTE >= other->n_words) {
+ cell->n_words += other->n_words;
+@@ -745,7 +745,7 @@ sec_realloc (Block *block,
+ sec_write_guards (cell);
+ }
+ }
+-
++
+ if (cell->n_words >= n_words) {
+ cell->requested = length;
+ cell->tag = tag;
+@@ -760,7 +760,7 @@ sec_realloc (Block *block,
+ memcpy_with_vbits (alloc, memory, valid);
+ sec_free (block, memory);
+ }
+-
++
+ return alloc;
+ }
+
+@@ -770,7 +770,7 @@ sec_allocated (Block *block, void *memory)
+ {
+ Cell *cell;
+ word_t *word;
+-
++
+ ASSERT (block);
+ ASSERT (memory);
+
+@@ -780,12 +780,12 @@ sec_allocated (Block *block, void *memory)
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_DEFINED (word, sizeof (word_t));
+ #endif
+-
++
+ /* Lookup the meta for this memory block (using guard pointer) */
+ ASSERT (sec_is_valid_word (block, word));
+ ASSERT (pool_valid (*word));
+ cell = *word;
+-
++
+ sec_check_guards (cell);
+ ASSERT (cell->requested > 0);
+ ASSERT (cell->tag != NULL);
+@@ -817,10 +817,10 @@ sec_validate (Block *block)
+ ASSERT (sec_is_valid_word (block, word));
+ ASSERT (pool_valid (*word));
+ cell = *word;
+-
++
+ /* Validate that it's actually for real */
+ sec_check_guards (cell);
+-
++
+ /* Is it an allocated block? */
+ if (cell->requested > 0) {
+ ASSERT (cell->tag != NULL);
+@@ -829,7 +829,7 @@ sec_validate (Block *block)
+ ASSERT (cell->next->prev == cell);
+ ASSERT (cell->prev->next == cell);
+ ASSERT (cell->requested <= (cell->n_words - 2) * sizeof (word_t));
+-
++
+ /* An unused block */
+ } else {
+ ASSERT (cell->tag == NULL);
+@@ -838,7 +838,7 @@ sec_validate (Block *block)
+ ASSERT (cell->next->prev == cell);
+ ASSERT (cell->prev->next == cell);
+ }
+-
++
+ word += cell->n_words;
+ if (word == last)
+ break;
+@@ -855,7 +855,7 @@ sec_acquire_pages (size_t *sz,
+ {
+ void *pages;
+ unsigned long pgsize;
+-
++
+ ASSERT (sz);
+ ASSERT (*sz);
+ ASSERT (during_tag);
+@@ -863,7 +863,7 @@ sec_acquire_pages (size_t *sz,
+ /* Make sure sz is a multiple of the page size */
+ pgsize = getpagesize ();
+ *sz = (*sz + pgsize -1) & ~(pgsize - 1);
+-
++
+ #if defined(HAVE_MLOCK)
+ pages = mmap (0, *sz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+ if (pages == MAP_FAILED) {
+@@ -873,7 +873,7 @@ sec_acquire_pages (size_t *sz,
+ show_warning = 0;
+ return NULL;
+ }
+-
++
+ if (mlock (pages, *sz) < 0) {
+ if (show_warning && egg_secure_warnings && errno != EPERM) {
+ fprintf (stderr, "couldn't lock %lu bytes of memory (%s): %s\n",
+@@ -883,12 +883,12 @@ sec_acquire_pages (size_t *sz,
+ munmap (pages, *sz);
+ return NULL;
+ }
+-
++
+ DEBUG_ALLOC ("gkr-secure-memory: new block ", *sz);
+-
++
+ show_warning = 1;
+ return pages;
+-
++
+ #else
+ if (show_warning && egg_secure_warnings)
+ fprintf (stderr, "your system does not support private memory");
+@@ -898,21 +898,21 @@ sec_acquire_pages (size_t *sz,
+
+ }
+
+-static void
++static void
+ sec_release_pages (void *pages, size_t sz)
+ {
+ ASSERT (pages);
+ ASSERT (sz % getpagesize () == 0);
+-
++
+ #if defined(HAVE_MLOCK)
+ if (munlock (pages, sz) < 0 && egg_secure_warnings)
+ fprintf (stderr, "couldn't unlock private memory: %s\n", strerror (errno));
+-
++
+ if (munmap (pages, sz) < 0 && egg_secure_warnings)
+ fprintf (stderr, "couldn't unmap private anonymous memory: %s\n", strerror (errno));
+-
++
+ DEBUG_ALLOC ("gkr-secure-memory: freed block ", sz);
+-
++
+ #else
+ ASSERT (FALSE);
+ #endif
+@@ -924,7 +924,7 @@ sec_release_pages (void *pages, size_t sz)
+
+ static Block *all_blocks = NULL;
+
+-static Block*
++static Block*
+ sec_block_create (size_t size,
+ const char *during_tag)
+ {
+@@ -950,7 +950,7 @@ sec_block_create (size_t size,
+ /* The size above is a minimum, we're free to go bigger */
+ if (size < DEFAULT_BLOCK_SIZE)
+ size = DEFAULT_BLOCK_SIZE;
+-
++
+ block->words = sec_acquire_pages (&size, during_tag);
+ block->n_words = size / sizeof (word_t);
+ if (!block->words) {
+@@ -958,11 +958,11 @@ sec_block_create (size_t size,
+ pool_free (cell);
+ return NULL;
+ }
+-
++
+ #ifdef WITH_VALGRIND
+ VALGRIND_MAKE_MEM_DEFINED (block->words, size);
+ #endif
+-
++
+ /* The first cell to allocate from */
+ cell->words = block->words;
+ cell->n_words = block->n_words;
+@@ -972,7 +972,7 @@ sec_block_create (size_t size,
+
+ block->next = all_blocks;
+ all_blocks = block;
+-
++
+ return block;
+ }
+
+@@ -985,7 +985,7 @@ sec_block_destroy (Block *block)
+ ASSERT (block);
+ ASSERT (block->words);
+ ASSERT (block->n_used == 0);
+-
++
+ /* Remove from the list */
+ for (at = &all_blocks, bl = *at; bl; at = &bl->next, bl = *at) {
+ if (bl == block) {
+@@ -993,7 +993,7 @@ sec_block_destroy (Block *block)
+ break;
+ }
+ }
+-
++
+ /* Must have been found */
+ ASSERT (bl == block);
+ ASSERT (block->used_cells == NULL);
+@@ -1004,7 +1004,7 @@ sec_block_destroy (Block *block)
+ sec_remove_cell_ring (&block->unused_cells, cell);
+ pool_free (cell);
+ }
+-
++
+ /* Release all pages of secure memory */
+ sec_release_pages (block->words, block->n_words * sizeof (word_t));
+
+@@ -1028,35 +1028,35 @@ egg_secure_alloc_full (const char *tag,
+
+ if (length > 0xFFFFFFFF / 2) {
+ if (egg_secure_warnings)
+- fprintf (stderr, "tried to allocate an insane amount of memory: %lu\n",
+- (unsigned long)length);
++ fprintf (stderr, "tried to allocate an insane amount of memory: %lu\n",
++ (unsigned long)length);
+ return NULL;
+ }
+
+ /* Can't allocate zero bytes */
+ if (length == 0)
+ return NULL;
+-
++
+ DO_LOCK ();
+-
++
+ for (block = all_blocks; block; block = block->next) {
+ memory = sec_alloc (block, tag, length);
+ if (memory)
+- break;
++ break;
+ }
+-
++
+ /* None of the current blocks have space, allocate new */
+ if (!memory) {
+ block = sec_block_create (length, tag);
+ if (block)
+ memory = sec_alloc (block, tag, length);
+ }
+-
++
+ #ifdef WITH_VALGRIND
+ if (memory != NULL)
+ VALGRIND_MALLOCLIKE_BLOCK (memory, length, sizeof (void*), 1);
+ #endif
+-
++
+ DO_UNLOCK ();
+
+ if (!memory && (flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback != NULL) {
+@@ -1064,10 +1064,10 @@ egg_secure_alloc_full (const char *tag,
+ if (memory) /* Our returned memory is always zeroed */
+ memset (memory, 0, length);
+ }
+-
++
+ if (!memory)
+ errno = ENOMEM;
+-
++
+ return memory;
+ }
+
+@@ -1087,20 +1087,20 @@ egg_secure_realloc_full (const char *tag,
+
+ if (length > 0xFFFFFFFF / 2) {
+ if (egg_secure_warnings)
+- fprintf (stderr, "tried to allocate an insane amount of memory: %lu\n",
++ fprintf (stderr, "tried to allocate an insane amount of memory: %lu\n",
+ (unsigned long)length);
+ return NULL;
+ }
+-
++
+ if (memory == NULL)
+ return egg_secure_alloc_full (tag, length, flags);
+ if (!length) {
+ egg_secure_free_full (memory, flags);
+ return NULL;
+ }
+-
++
+ DO_LOCK ();
+-
++
+ /* Find out where it belongs to */
+ for (block = all_blocks; block; block = block->next) {
+ if (sec_is_valid_word (block, memory)) {
+@@ -1115,10 +1115,10 @@ egg_secure_realloc_full (const char *tag,
+
+ #ifdef WITH_VALGRIND
+ /* Now tell valgrind about either the new block or old one */
+- VALGRIND_MALLOCLIKE_BLOCK (alloc ? alloc : memory,
+- alloc ? length : previous,
++ VALGRIND_MALLOCLIKE_BLOCK (alloc ? alloc : memory,
++ alloc ? length : previous,
+ sizeof (word_t), 1);
+-#endif
++#endif
+ break;
+ }
+ }
+@@ -1129,13 +1129,13 @@ egg_secure_realloc_full (const char *tag,
+
+ if (block && block->n_used == 0)
+ sec_block_destroy (block);
+-
+- DO_UNLOCK ();
+-
++
++ DO_UNLOCK ();
++
+ if (!block) {
+ if ((flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback) {
+- /*
+- * In this case we can't zero the returned memory,
++ /*
++ * In this case we can't zero the returned memory,
+ * because we don't know what the block size was.
+ */
+ return EGG_SECURE_GLOBALS.fallback (memory, length);
+@@ -1155,7 +1155,7 @@ egg_secure_realloc_full (const char *tag,
+ egg_secure_free_full (memory, flags);
+ }
+ }
+-
++
+ if (!alloc)
+ errno = ENOMEM;
+
+@@ -1172,12 +1172,12 @@ void
+ egg_secure_free_full (void *memory, int flags)
+ {
+ Block *block = NULL;
+-
++
+ if (memory == NULL)
+ return;
+-
++
+ DO_LOCK ();
+-
++
+ /* Find out where it belongs to */
+ for (block = all_blocks; block; block = block->next) {
+ if (sec_is_valid_word (block, memory))
+@@ -1195,9 +1195,9 @@ egg_secure_free_full (void *memory, int flags)
+ if (block->n_used == 0)
+ sec_block_destroy (block);
+ }
+-
++
+ DO_UNLOCK ();
+-
++
+ if (!block) {
+ if ((flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback) {
+ EGG_SECURE_GLOBALS.fallback (memory, 0);
+@@ -1208,36 +1208,36 @@ egg_secure_free_full (void *memory, int flags)
+ ASSERT (0 && "memory does does not belong to secure memory pool");
+ }
+ }
+-}
++}
+
+-int
++int
+ egg_secure_check (const void *memory)
+ {
+ Block *block = NULL;
+
+ DO_LOCK ();
+-
++
+ /* Find out where it belongs to */
+ for (block = all_blocks; block; block = block->next) {
+ if (sec_is_valid_word (block, (word_t*)memory))
+ break;
+ }
+-
++
+ DO_UNLOCK ();
+-
++
+ return block == NULL ? 0 : 1;
+-}
++}
+
+ void
+ egg_secure_validate (void)
+ {
+ Block *block = NULL;
+-
++
+ DO_LOCK ();
+-
++
+ for (block = all_blocks; block; block = block->next)
+ sec_validate (block);
+-
++
+ DO_UNLOCK ();
+ }
+
+@@ -1320,20 +1320,42 @@ egg_secure_strdup_full (const char *tag,
+ if (!str)
+ return NULL;
+
+- len = strlen (str) + 1;
++ len = strlen (str) + 1;
+ res = (char *)egg_secure_alloc_full (tag, len, options);
+ strcpy (res, str);
+ return res;
+ }
+
++char *
++egg_secure_strndup_full (const char *tag,
++ const char *str,
++ size_t length,
++ int options)
++{
++ size_t len;
++ char *res;
++ const char *end;
++
++ if (!str)
++ return NULL;
++
++ end = memchr (str, '\0', length);
++ if (end != NULL)
++ length = (end - str);
++ len = length + 1;
++ res = (char *)egg_secure_alloc_full (tag, len, options);
++ memcpy (res, str, len);
++ return res;
++}
++
+ void
+ egg_secure_clear (void *p, size_t length)
+ {
+ volatile char *vp;
+-
++
+ if (p == NULL)
+ return;
+-
++
+ vp = (volatile char*)p;
+ while (length) {
+ *vp = 0xAA;
+@@ -1355,10 +1377,10 @@ egg_secure_strfree (char *str)
+ {
+ /*
+ * If we're using unpageable 'secure' memory, then the free call
+- * should zero out the memory, but because on certain platforms
++ * should zero out the memory, but because on certain platforms
+ * we may be using normal memory, zero it out here just in case.
+ */
+-
++
+ egg_secure_strclear (str);
+ egg_secure_free_full (str, EGG_SECURE_USE_FALLBACK);
+ }
diff --git a/security/gnome-keyring/files/patch-egg_egg-secure-memory.h b/security/gnome-keyring/files/patch-egg_egg-secure-memory.h
new file mode 100644
index 000000000..6e9b5ca3e
--- /dev/null
+++ b/security/gnome-keyring/files/patch-egg_egg-secure-memory.h
@@ -0,0 +1,75 @@
+--- egg/egg-secure-memory.h.orig Wed Sep 26 10:28:35 2012
++++ egg/egg-secure-memory.h Sat Oct 27 14:46:28 2012
+@@ -27,16 +27,16 @@
+ #include <stdlib.h>
+
+ /* -------------------------------------------------------------------
+- * Low Level Secure Memory
+- *
+- * IMPORTANT: This is pure vanila standard C, no glib. We need this
+- * because certain consumers of this protocol need to be built
++ * Low Level Secure Memory
++ *
++ * IMPORTANT: This is pure vanila standard C, no glib. We need this
++ * because certain consumers of this protocol need to be built
+ * without linking in any special libraries. ie: the PKCS#11 module.
+- *
++ *
+ * Thread locking
+- *
++ *
+ * In order to use these functions in a module the following functions
+- * must be defined somewhere, and provide appropriate locking for
++ * must be defined somewhere, and provide appropriate locking for
+ * secure memory between threads:
+ */
+
+@@ -66,12 +66,12 @@ typedef struct {
+
+ extern egg_secure_glob EGG_SECURE_GLOBALS;
+
+-/*
++/*
+ * Main functionality
+- *
++ *
+ * Allocations return NULL on failure.
+- */
+-
++ */
++
+ #define EGG_SECURE_USE_FALLBACK 0x0001
+
+ #define EGG_SECURE_DECLARE(tag) \
+@@ -83,23 +83,28 @@ extern egg_secure_glob EGG_SECURE_GLOBALS;
+ } \
+ static inline void* egg_secure_strdup (const char *str) { \
+ return egg_secure_strdup_full (G_STRINGIFY (tag), str, EGG_SECURE_USE_FALLBACK); \
++ } \
++ static inline void* egg_secure_strndup (const char *str, size_t length) { \
++ return egg_secure_strndup_full (G_STRINGIFY (tag), str, length, EGG_SECURE_USE_FALLBACK); \
+ }
+
+ void* egg_secure_alloc_full (const char *tag, size_t length, int options);
+
+ void* egg_secure_realloc_full (const char *tag, void *p, size_t length, int options);
+
+-void egg_secure_free (void* p);
++void egg_secure_free (void* p);
+
+-void egg_secure_free_full (void* p, int fallback);
++void egg_secure_free_full (void* p, int fallback);
+
+ void egg_secure_clear (void *p, size_t length);
+
+-int egg_secure_check (const void* p);
++int egg_secure_check (const void* p);
+
+ void egg_secure_validate (void);
+
+ char* egg_secure_strdup_full (const char *tag, const char *str, int options);
++
++char* egg_secure_strndup_full (const char *tag, const char *str, size_t length, int options);
+
+ void egg_secure_strclear (char *str);
+
diff --git a/security/gnome-keyring/files/patch-egg_egg-unix-credentials.c b/security/gnome-keyring/files/patch-egg_egg-unix-credentials.c
deleted file mode 100644
index 5ae53f8b0..000000000
--- a/security/gnome-keyring/files/patch-egg_egg-unix-credentials.c
+++ /dev/null
@@ -1,44 +0,0 @@
---- egg/egg-unix-credentials.c.orig 2010-01-13 00:21:23.000000000 -0500
-+++ egg/egg-unix-credentials.c 2010-01-13 00:25:46.000000000 -0500
-@@ -27,6 +27,7 @@
-
- #include <sys/types.h>
- #include <sys/socket.h>
-+#include <sys/param.h>
- #include <sys/uio.h>
- #include <sys/un.h>
- #include <errno.h>
-@@ -37,6 +38,33 @@
- #include <ucred.h>
- #endif
-
-+#if __FreeBSD_version < 701101
-+static char *
-+strndup (const char *s, size_t n)
-+{
-+ size_t nAvail;
-+ char *p;
-+
-+ if (s == NULL)
-+ return NULL;
-+
-+ if (memchr (s, '\0', n) != NULL) {
-+ nAvail = strlen(s);
-+ if (nAvail > n)
-+ nAvail = n;
-+ } else{
-+ nAvail = n;
-+ }
-+ p = malloc (nAvail + 1);
-+ if (p == NULL)
-+ return NULL;
-+ memcpy (p, s, nAvail);
-+ p[nAvail] = '\0';
-+
-+ return p;
-+}
-+#endif
-+
- int
- egg_unix_credentials_read (int sock, pid_t *pid, uid_t *uid)
- {
diff --git a/security/gnome-keyring/files/patch-egg_tests_test-secmem.c b/security/gnome-keyring/files/patch-egg_tests_test-secmem.c
new file mode 100644
index 000000000..6aa1d599c
--- /dev/null
+++ b/security/gnome-keyring/files/patch-egg_tests_test-secmem.c
@@ -0,0 +1,66 @@
+--- egg/tests/test-secmem.c.orig Wed Sep 26 10:28:35 2012
++++ egg/tests/test-secmem.c Sat Oct 27 14:46:28 2012
+@@ -39,7 +39,7 @@ extern int egg_secure_warnings;
+
+ EGG_SECURE_DECLARE (tests);
+
+-/*
++/*
+ * Each test looks like (on one line):
+ * void unit_test_xxxxx (CuTest* cu)
+ *
+@@ -93,10 +93,12 @@ test_realloc_across (void)
+ g_assert (p != NULL);
+ g_assert_cmpint (G_MAXSIZE, ==, find_non_zero (p, 1088));
+
+- /* Reallocate to a large one, will have to have changed blocks */
++ /* Reallocate to a large one, will have to have changed blocks */
+ p2 = egg_secure_realloc_full ("tests", p, 16200, 0);
+ g_assert (p2 != NULL);
+ g_assert_cmpint (G_MAXSIZE, ==, find_non_zero (p2, 16200));
++
++ egg_secure_free (p2);
+ }
+
+ static void
+@@ -180,26 +182,25 @@ test_multialloc (void)
+ case 0: /* Allocate some memory */
+ size = g_random_int_range (1, 16384);
+ data = egg_secure_alloc (size);
+- g_assert (data);
++ g_assert (data != NULL);
+ memset (data, 0xCAFEBABE, size);
+ g_ptr_array_add (memory, data);
+ break;
+ case 1: /* Reallocate some memory */
+ index = g_random_int_range (0, memory->len);
+ data = g_ptr_array_index (memory, index);
+- g_assert (data);
++ g_assert (data != NULL);
+ size = g_random_int_range (1, 16384);
+ data = egg_secure_realloc (data, size);
+- g_assert (data);
++ g_assert (data != NULL);
+ memset (data, 0xCAFEBABE, size);
+ g_ptr_array_index (memory, index) = data;
+ break;
+ case 2: /* Free some memory */
+ index = g_random_int_range (0, memory->len);
+- data = g_ptr_array_index (memory, index);
+- g_assert (data);
++ data = g_ptr_array_remove_index_fast (memory, index);
++ g_assert (data != NULL);
+ egg_secure_free (data);
+- g_ptr_array_remove_index_fast (memory, index);
+ break;
+ default:
+ g_assert_not_reached ();
+@@ -212,6 +213,8 @@ test_multialloc (void)
+ }
+
+ g_assert (memory->len == 0);
++ for (i = 0; i < memory->len; i++)
++ egg_secure_free (memory->pdata[i]);
+ g_ptr_array_free (memory, TRUE);
+
+ egg_secure_warnings = 1;
diff --git a/security/gnome-keyring/files/patch-gcr_gcr-certificate.c b/security/gnome-keyring/files/patch-gcr_gcr-certificate.c
deleted file mode 100644
index bdf10bf14..000000000
--- a/security/gnome-keyring/files/patch-gcr_gcr-certificate.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gcr/gcr-certificate.c.orig 2010-09-04 12:04:30.000000000 +0200
-+++ gcr/gcr-certificate.c 2010-09-04 12:04:42.000000000 +0200
-@@ -158,7 +158,7 @@ calculate_key_size (GcrCertificateInfo *
- const guchar *data, *params;
- gsize n_data, n_params;
- guint key_size = 0, n_bits;
-- guchar *key;
-+ guchar *key = NULL;
- GQuark oid;
-
- data = egg_asn1x_get_raw_element (egg_asn1x_node (info->asn1, "tbsCertificate", "subjectPublicKeyInfo", NULL), &n_data);
diff --git a/security/gnome-keyring/files/patch-pkcs11_rpc-layer_gkm-rpc-dispatch.c b/security/gnome-keyring/files/patch-pkcs11_rpc-layer_gkm-rpc-dispatch.c
deleted file mode 100644
index 146d8b69d..000000000
--- a/security/gnome-keyring/files/patch-pkcs11_rpc-layer_gkm-rpc-dispatch.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- pkcs11/rpc-layer/gkm-rpc-dispatch.c.orig 2010-09-04 12:06:44.000000000 +0200
-+++ pkcs11/rpc-layer/gkm-rpc-dispatch.c 2010-09-04 12:07:12.000000000 +0200
-@@ -784,7 +784,7 @@ rpc_C_Finalize (CallState *cs)
- {
- CK_SLOT_ID_PTR slots;
- CK_ULONG n_slots, i;
-- CK_RV ret;
-+ CK_RV ret = CKR_OK;
-
- debug (("C_Finalize: enter"));
-
diff --git a/security/gnome-keyring/pkg-plist b/security/gnome-keyring/pkg-plist
index 8ce23ce40..6b480bd21 100644
--- a/security/gnome-keyring/pkg-plist
+++ b/security/gnome-keyring/pkg-plist
@@ -1,103 +1,28 @@
bin/gnome-keyring
+bin/gnome-keyring-3
bin/gnome-keyring-daemon
etc/xdg/autostart/gnome-keyring-gpg.desktop
etc/xdg/autostart/gnome-keyring-pkcs11.desktop
etc/xdg/autostart/gnome-keyring-secrets.desktop
etc/xdg/autostart/gnome-keyring-ssh.desktop
-include/gcr/gcr/gcr-certificate-basics-widget.h
-include/gcr/gcr/gcr-certificate-details-widget.h
-include/gcr/gcr/gcr-certificate.h
-include/gcr/gcr/gcr-importer.h
-include/gcr/gcr/gcr-parser.h
-include/gcr/gcr/gcr-simple-certificate.h
-include/gcr/gcr/gcr-types.h
-include/gcr/gcr/gcr-unlock-options-widget.h
-include/gcr/gcr/gcr-unlock-options.h
-include/gcr/gcr/gcr.h
-include/gp11/gp11.h
-include/gp11/pkcs11.h
-include/gp11/pkcs11g.h
-include/gp11/pkcs11n.h
-lib/gnome-keyring/devel/gkm-ssh-store-standalone.a
+lib/gnome-keyring/devel/gkm-gnome2-store-standalone.la
+lib/gnome-keyring/devel/gkm-gnome2-store-standalone.so
+lib/gnome-keyring/devel/gkm-roots-store-standalone.la
+lib/gnome-keyring/devel/gkm-roots-store-standalone.so
+lib/gnome-keyring/devel/gkm-secret-store-standalone.la
+lib/gnome-keyring/devel/gkm-secret-store-standalone.so
lib/gnome-keyring/devel/gkm-ssh-store-standalone.la
lib/gnome-keyring/devel/gkm-ssh-store-standalone.so
-lib/gnome-keyring/devel/gkm-user-store-standalone.a
-lib/gnome-keyring/devel/gkm-user-store-standalone.la
-lib/gnome-keyring/devel/gkm-user-store-standalone.so
-lib/gnome-keyring/gnome-keyring-pkcs11.a
-lib/gnome-keyring/gnome-keyring-pkcs11.la
-lib/gnome-keyring/gnome-keyring-pkcs11.so
-lib/gnome-keyring/standalone/gkm-roots-store-standalone.a
-lib/gnome-keyring/standalone/gkm-roots-store-standalone.la
-lib/gnome-keyring/standalone/gkm-roots-store-standalone.so
-lib/gnome-keyring/standalone/gkm-secret-store-standalone.a
-lib/gnome-keyring/standalone/gkm-secret-store-standalone.la
-lib/gnome-keyring/standalone/gkm-secret-store-standalone.so
-lib/libgcr.a
-lib/libgcr.la
-lib/libgcr.so
-lib/libgcr.so.0
-lib/libgp11.a
-lib/libgp11.la
-lib/libgp11.so
-lib/libgp11.so.0
-lib/pam_gnome_keyring.a
+lib/gnome-keyring/devel/gkm-xdg-store-standalone.la
+lib/gnome-keyring/devel/gkm-xdg-store-standalone.so
lib/pam_gnome_keyring.la
lib/pam_gnome_keyring.so
-libdata/pkgconfig/gcr-0.pc
-libdata/pkgconfig/gp11-0.pc
-libexec/gnome-keyring-prompt
+lib/pkcs11/gnome-keyring-pkcs11.la
+lib/pkcs11/gnome-keyring-pkcs11.so
share/GConf/gsettings/org.gnome.crypto.cache.convert
-share/GConf/gsettings/org.gnome.crypto.pgp.convert
share/dbus-1/services/org.freedesktop.secrets.service
share/dbus-1/services/org.gnome.keyring.service
-share/doc/gcr-0/ch01.html
-share/doc/gcr-0/gcr-GcrCertificate.html
-share/doc/gcr-0/gcr-gcr-certificate-basics-widget.html
-share/doc/gcr-0/gcr-gcr-certificate-details-widget.html
-share/doc/gcr-0/gcr-gcr-import-dialog.html
-share/doc/gcr-0/gcr-gcr-importer.html
-share/doc/gcr-0/gcr-gcr-initializer.html
-share/doc/gcr-0/gcr-gcr-parser.html
-share/doc/gcr-0/gcr-gcr-simple-certificate.html
-share/doc/gcr-0/gcr-gcr-types.html
-share/doc/gcr-0/gcr-gcr-xxx.html
-share/doc/gcr-0/gcr-0.devhelp
-share/doc/gcr-0/gcr-0.devhelp2
-share/doc/gcr-0/home.png
-share/doc/gcr-0/index.html
-share/doc/gcr-0/index.sgml
-share/doc/gcr-0/left.png
-share/doc/gcr-0/right.png
-share/doc/gcr-0/style.css
-share/doc/gcr-0/up.png
-share/doc/gp11/GP11Module.html
-share/doc/gp11/GP11Object.html
-share/doc/gp11/GP11Session.html
-share/doc/gp11/GP11Slot.html
-share/doc/gp11/ch01.html
-share/doc/gp11/gp11-Errors.html
-share/doc/gp11/gp11-GP11Attribute.html
-share/doc/gp11/gp11-GP11Attributes.html
-share/doc/gp11/gp11-Miscellaneous-Functions.html
-share/doc/gp11/gp11.devhelp
-share/doc/gp11/gp11.devhelp2
-share/doc/gp11/home.png
-share/doc/gp11/index.html
-share/doc/gp11/index.sgml
-share/doc/gp11/left.png
-share/doc/gp11/right.png
-share/doc/gp11/style.css
-share/doc/gp11/up.png
-share/gcr/ui/gcr-certificate-basics-widget.ui
-share/gcr/ui/gcr-import-dialog.ui
-share/gcr/ui/gcr-unlock-options-widget.ui
-%%DATADIR%%/introspect/introspect-collection.xml
-%%DATADIR%%/introspect/introspect-item.xml
-%%DATADIR%%/introspect/introspect-prompt.xml
-%%DATADIR%%/introspect/introspect-service.xml
-%%DATADIR%%/introspect/introspect-session.xml
-%%DATADIR%%/ui/gku-prompt.ui
+share/locale/af/LC_MESSAGES/gnome-keyring.mo
share/locale/ar/LC_MESSAGES/gnome-keyring.mo
share/locale/as/LC_MESSAGES/gnome-keyring.mo
share/locale/ast/LC_MESSAGES/gnome-keyring.mo
@@ -119,6 +44,7 @@ share/locale/el/LC_MESSAGES/gnome-keyring.mo
share/locale/en@shaw/LC_MESSAGES/gnome-keyring.mo
share/locale/en_CA/LC_MESSAGES/gnome-keyring.mo
share/locale/en_GB/LC_MESSAGES/gnome-keyring.mo
+share/locale/eo/LC_MESSAGES/gnome-keyring.mo
share/locale/es/LC_MESSAGES/gnome-keyring.mo
share/locale/et/LC_MESSAGES/gnome-keyring.mo
share/locale/eu/LC_MESSAGES/gnome-keyring.mo
@@ -137,6 +63,7 @@ share/locale/is/LC_MESSAGES/gnome-keyring.mo
share/locale/it/LC_MESSAGES/gnome-keyring.mo
share/locale/ja/LC_MESSAGES/gnome-keyring.mo
share/locale/ka/LC_MESSAGES/gnome-keyring.mo
+share/locale/km/LC_MESSAGES/gnome-keyring.mo
share/locale/kn/LC_MESSAGES/gnome-keyring.mo
share/locale/ko/LC_MESSAGES/gnome-keyring.mo
share/locale/lt/LC_MESSAGES/gnome-keyring.mo
@@ -172,29 +99,20 @@ share/locale/ta/LC_MESSAGES/gnome-keyring.mo
share/locale/te/LC_MESSAGES/gnome-keyring.mo
share/locale/th/LC_MESSAGES/gnome-keyring.mo
share/locale/tr/LC_MESSAGES/gnome-keyring.mo
+share/locale/ug/LC_MESSAGES/gnome-keyring.mo
share/locale/uk/LC_MESSAGES/gnome-keyring.mo
share/locale/vi/LC_MESSAGES/gnome-keyring.mo
share/locale/xh/LC_MESSAGES/gnome-keyring.mo
share/locale/zh_CN/LC_MESSAGES/gnome-keyring.mo
share/locale/zh_HK/LC_MESSAGES/gnome-keyring.mo
share/locale/zh_TW/LC_MESSAGES/gnome-keyring.mo
-@dirrm %%DATADIR%%/ui
-@dirrm %%DATADIR%%/introspect
-@dirrm %%DATADIR%%
-@dirrm share/gcr/ui
-@dirrm share/gcr
-@dirrm share/doc/gp11
-@dirrm share/doc/gcr-0
-@dirrm lib/gnome-keyring/standalone
-@dirrm lib/gnome-keyring/devel
-@dirrm lib/gnome-keyring
-@dirrm include/gp11
-@dirrm include/gcr/gcr
-@dirrm include/gcr
+share/p11-kit/modules/gnome-keyring.module
@dirrmtry share/locale/zh_HK/LC_MESSAGES
@dirrmtry share/locale/zh_HK
@dirrmtry share/locale/xh/LC_MESSAGES
@dirrmtry share/locale/xh
+@dirrmtry share/locale/ug/LC_MESSAGES
+@dirrmtry share/locale/ug
@dirrmtry share/locale/te/LC_MESSAGES
@dirrmtry share/locale/te
@dirrmtry share/locale/sr@latin/LC_MESSAGES
@@ -211,6 +129,8 @@ share/locale/zh_TW/LC_MESSAGES/gnome-keyring.mo
@dirrmtry share/locale/mg
@dirrmtry share/locale/mai/LC_MESSAGES
@dirrmtry share/locale/mai
+@dirrmtry share/locale/km/LC_MESSAGES
+@dirrmtry share/locale/km
@dirrmtry share/locale/en@shaw/LC_MESSAGES
@dirrmtry share/locale/en@shaw
@dirrmtry share/locale/dz/LC_MESSAGES
@@ -225,3 +145,6 @@ share/locale/zh_TW/LC_MESSAGES/gnome-keyring.mo
@dirrmtry share/locale/ast
@dirrmtry share/locale/as/LC_MESSAGES
@dirrmtry share/locale/as
+@dirrmtry lib/pkcs11
+@dirrm lib/gnome-keyring/devel
+@dirrm lib/gnome-keyring