diff --git a/x11/gnome/keyring/Makefile b/x11/gnome/keyring/Makefile index 07adff4fb06..07a40f0d9bf 100644 --- a/x11/gnome/keyring/Makefile +++ b/x11/gnome/keyring/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.87 2012/10/27 13:21:56 ajacoutot Exp $ +# $OpenBSD: Makefile,v 1.88 2012/11/10 10:15:34 ajacoutot Exp $ SHARED_ONLY= Yes @@ -6,7 +6,7 @@ COMMENT= password agent for the GNOME project GNOME_PROJECT= gnome-keyring GNOME_VERSION= 3.6.1 -REVISION= 2 +REVISION= 3 HOMEPAGE= https://live.gnome.org/GnomeKeyring diff --git a/x11/gnome/keyring/patches/patch-egg_egg-secure-memory_c b/x11/gnome/keyring/patches/patch-egg_egg-secure-memory_c deleted file mode 100644 index c164e2344fe..00000000000 --- a/x11/gnome/keyring/patches/patch-egg_egg-secure-memory_c +++ /dev/null @@ -1,966 +0,0 @@ -$OpenBSD: patch-egg_egg-secure-memory_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 3ad60838447f5badd11d98447f13ad8e78786242 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:09:46 +0000 -Subject: Merge secure memory changes from libsecret - ---- 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/x11/gnome/keyring/patches/patch-egg_egg-secure-memory_h b/x11/gnome/keyring/patches/patch-egg_egg-secure-memory_h deleted file mode 100644 index 3646b8ffcc0..00000000000 --- a/x11/gnome/keyring/patches/patch-egg_egg-secure-memory_h +++ /dev/null @@ -1,82 +0,0 @@ -$OpenBSD: patch-egg_egg-secure-memory_h,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 3ad60838447f5badd11d98447f13ad8e78786242 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:09:46 +0000 -Subject: Merge secure memory changes from libsecret - ---- 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/x11/gnome/keyring/patches/patch-egg_tests_test-secmem_c b/x11/gnome/keyring/patches/patch-egg_tests_test-secmem_c deleted file mode 100644 index 3f8bb28dc80..00000000000 --- a/x11/gnome/keyring/patches/patch-egg_tests_test-secmem_c +++ /dev/null @@ -1,73 +0,0 @@ -$OpenBSD: patch-egg_tests_test-secmem_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 3ad60838447f5badd11d98447f13ad8e78786242 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:09:46 +0000 -Subject: Merge secure memory changes from libsecret - ---- 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/x11/gnome/libgnome-keyring/Makefile b/x11/gnome/libgnome-keyring/Makefile index 9af5534a9ba..391c2a8a920 100644 --- a/x11/gnome/libgnome-keyring/Makefile +++ b/x11/gnome/libgnome-keyring/Makefile @@ -1,10 +1,10 @@ -# $OpenBSD: Makefile,v 1.22 2012/10/27 13:21:56 ajacoutot Exp $ +# $OpenBSD: Makefile,v 1.23 2012/11/10 10:15:34 ajacoutot Exp $ COMMENT= library for gnome keyring integration GNOME_PROJECT= libgnome-keyring GNOME_VERSION= 3.6.0 -REVISION= 1 +REVISION= 2 SHARED_LIBS += gnome-keyring 7.0 # 2.0 diff --git a/x11/gnome/libgnome-keyring/patches/patch-egg_egg-dh_c b/x11/gnome/libgnome-keyring/patches/patch-egg_egg-dh_c deleted file mode 100644 index 2c59b108156..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-egg_egg-dh_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-egg_egg-dh_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- egg/egg-dh.c.orig Wed Aug 8 21:00:54 2012 -+++ egg/egg-dh.c Sat Oct 27 14:36:16 2012 -@@ -27,6 +27,8 @@ - /* Enabling this is a complete security compromise */ - #define DEBUG_DH_SECRET 0 - -+EGG_SECURE_DECLARE (dh); -+ - typedef struct _DHGroup { - const gchar *name; - guint bits; diff --git a/x11/gnome/libgnome-keyring/patches/patch-egg_egg-libgcrypt_c b/x11/gnome/libgnome-keyring/patches/patch-egg_egg-libgcrypt_c deleted file mode 100644 index 0d42333085d..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-egg_egg-libgcrypt_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-egg_egg-libgcrypt_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- egg/egg-libgcrypt.c.orig Wed Aug 8 21:00:54 2012 -+++ egg/egg-libgcrypt.c Sat Oct 27 14:36:16 2012 -@@ -28,6 +28,8 @@ - - #include <gcrypt.h> - -+EGG_SECURE_DECLARE (libgcrypt); -+ - static void - log_handler (gpointer unused, int unknown, const gchar *msg, va_list va) - { diff --git a/x11/gnome/libgnome-keyring/patches/patch-egg_egg-secure-memory_c b/x11/gnome/libgnome-keyring/patches/patch-egg_egg-secure-memory_c deleted file mode 100644 index 2e4ace3b70f..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-egg_egg-secure-memory_c +++ /dev/null @@ -1,973 +0,0 @@ -$OpenBSD: patch-egg_egg-secure-memory_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- egg/egg-secure-memory.c.orig Wed Jun 8 10:00:06 2011 -+++ egg/egg-secure-memory.c Sat Oct 27 14:36:16 2012 -@@ -46,12 +46,6 @@ - #include <valgrind/memcheck.h> - #endif - --/* -- * Use this to force all memory through malloc -- * for use with valgrind and the like -- */ --#define FORCE_FALLBACK_MEMORY 0 -- - #define DEBUG_SECURE_MEMORY 0 - - #if DEBUG_SECURE_MEMORY -@@ -72,12 +66,12 @@ - #endif - - #define DO_LOCK() \ -- egg_memory_lock (); -+ EGG_SECURE_GLOBALS.lock (); - - #define DO_UNLOCK() \ -- egg_memory_unlock (); -+ EGG_SECURE_GLOBALS.unlock (); - --static int lock_warning = 1; -+static int show_warning = 1; - int egg_secure_warnings = 1; - - /* -@@ -97,20 +91,22 @@ typedef void* word_t; - typedef struct _Cell { - word_t *words; /* Pointer to secure memory */ - size_t n_words; /* Amount of secure memory in words */ -- size_t allocated; /* Amount actually requested by app, in bytes, 0 if unused */ -- struct _Cell *next; /* Next in unused memory ring, or NULL if used */ -- struct _Cell *prev; /* Previous in unused memory ring, or NULL if used */ -+ size_t requested; /* Amount actually requested by app, in bytes, 0 if unused */ -+ const char *tag; /* Tag which describes the allocation */ -+ struct _Cell *next; /* Next in memory ring */ -+ struct _Cell *prev; /* Previous in memory ring */ - } Cell; - - /* - * A block of secure memory. This structure is the header in that block. - */ - typedef struct _Block { -- word_t *words; /* Actual memory hangs off here */ -- size_t n_words; /* Number of words in block */ -- size_t used; /* Number of used allocations */ -- struct _Cell* unused; /* Ring of unused allocations */ -- struct _Block *next; /* Next block in list */ -+ word_t *words; /* Actual memory hangs off here */ -+ size_t n_words; /* Number of words in block */ -+ size_t n_used; /* Number of used allocations */ -+ struct _Cell* used_cells; /* Ring of used allocations */ -+ struct _Cell* unused_cells; /* Ring of unused allocations */ -+ struct _Block *next; /* Next block in list */ - } Block; - - /* ----------------------------------------------------------------------------- -@@ -167,17 +163,25 @@ typedef struct _Pool { - Item items[1]; /* Actual items hang off here */ - } Pool; - --static Pool *all_pools = NULL; -- --static void* -+static void * - pool_alloc (void) - { - Pool *pool; - void *pages, *item; - size_t len, i; - -+ if (!EGG_SECURE_GLOBALS.pool_version || -+ strcmp (EGG_SECURE_GLOBALS.pool_version, EGG_SECURE_POOL_VER_STR) != 0) { -+ if (show_warning && egg_secure_warnings) -+ fprintf (stderr, "the secure memory pool version does not match the code '%s' != '%s'\n", -+ EGG_SECURE_GLOBALS.pool_version ? EGG_SECURE_GLOBALS.pool_version : "(null)", -+ EGG_SECURE_POOL_VER_STR); -+ show_warning = 0; -+ return NULL; -+ } -+ - /* A pool with an available item */ -- for (pool = all_pools; pool; pool = pool->next) { -+ for (pool = EGG_SECURE_GLOBALS.pool_data; pool; pool = pool->next) { - if (unused_peek (&pool->unused)) - break; - } -@@ -191,8 +195,8 @@ pool_alloc (void) - - /* Fill in the block header, and inlude in block list */ - pool = pages; -- pool->next = all_pools; -- all_pools = pool; -+ pool->next = EGG_SECURE_GLOBALS.pool_data; -+ EGG_SECURE_GLOBALS.pool_data = pool; - pool->length = len; - pool->used = 0; - pool->unused = NULL; -@@ -227,7 +231,8 @@ pool_free (void* item) - ptr = item; - - /* Find which block this one belongs to */ -- for (at = &all_pools, pool = *at; pool; at = &pool->next, pool = *at) { -+ for (at = (Pool **)&EGG_SECURE_GLOBALS.pool_data, pool = *at; -+ pool != NULL; at = &pool->next, pool = *at) { - beg = (char*)pool->items; - end = (char*)pool + pool->length - sizeof (Item); - if (ptr >= beg && ptr <= end) { -@@ -263,6 +268,8 @@ pool_free (void* item) - unused_push (&pool->unused, item); - } - -+#ifndef G_DISABLE_ASSERT -+ - static int - pool_valid (void* item) - { -@@ -272,7 +279,7 @@ pool_valid (void* item) - ptr = item; - - /* Find which block this one belongs to */ -- for (pool = all_pools; pool; pool = pool->next) { -+ 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) -@@ -282,6 +289,8 @@ pool_valid (void* item) - return 0; - } - -+#endif /* G_DISABLE_ASSERT */ -+ - /* ----------------------------------------------------------------------------- - * SEC ALLOCATION - * -@@ -398,13 +407,34 @@ sec_is_valid_word (Block *block, word_t *word) - return (word >= block->words && word < block->words + block->n_words); - } - --static inline void* --sec_clear_memory (void *memory, size_t from, size_t to) -+static inline void -+sec_clear_undefined (void *memory, -+ size_t from, -+ size_t to) - { -+ char *ptr = memory; - ASSERT (from <= to); -- memset ((char*)memory + from, 0, to - from); -- return memory; -+#ifdef WITH_VALGRIND -+ VALGRIND_MAKE_MEM_UNDEFINED (ptr + from, to - from); -+#endif -+ memset (ptr + from, 0, to - from); -+#ifdef WITH_VALGRIND -+ VALGRIND_MAKE_MEM_UNDEFINED (ptr + from, to - from); -+#endif - } -+static inline void -+sec_clear_noaccess (void *memory, size_t from, size_t to) -+{ -+ char *ptr = memory; -+ ASSERT (from <= to); -+#ifdef WITH_VALGRIND -+ VALGRIND_MAKE_MEM_UNDEFINED (ptr + from, to - from); -+#endif -+ memset (ptr + from, 0, to - from); -+#ifdef WITH_VALGRIND -+ VALGRIND_MAKE_MEM_NOACCESS (ptr + from, to - from); -+#endif -+} - - static Cell* - sec_neighbor_before (Block *block, Cell *cell) -@@ -459,7 +489,9 @@ sec_neighbor_after (Block *block, Cell *cell) - } - - static void* --sec_alloc (Block *block, size_t length) -+sec_alloc (Block *block, -+ const char *tag, -+ size_t length) - { - Cell *cell, *other; - size_t n_words; -@@ -467,8 +499,9 @@ sec_alloc (Block *block, size_t length) - - ASSERT (block); - ASSERT (length); -+ ASSERT (tag); - -- if (!block->unused) -+ if (!block->unused_cells) - return NULL; - - /* -@@ -482,10 +515,10 @@ sec_alloc (Block *block, size_t length) - n_words = sec_size_to_words (length) + 2; - - /* Look for a cell of at least our required size */ -- cell = block->unused; -+ cell = block->unused_cells; - while (cell->n_words < n_words) { - cell = cell->next; -- if (cell == block->unused) { -+ if (cell == block->unused_cells) { - cell = NULL; - break; - } -@@ -494,7 +527,8 @@ sec_alloc (Block *block, size_t length) - if (!cell) - return NULL; - -- ASSERT (cell->allocated == 0); -+ ASSERT (cell->tag == NULL); -+ ASSERT (cell->requested == 0); - ASSERT (cell->prev); - ASSERT (cell->words); - sec_check_guards (cell); -@@ -516,10 +550,12 @@ sec_alloc (Block *block, size_t length) - } - - if (cell->next) -- sec_remove_cell_ring (&block->unused, cell); -+ sec_remove_cell_ring (&block->unused_cells, cell); - -- ++block->used; -- cell->allocated = length; -+ ++block->n_used; -+ cell->tag = tag; -+ cell->requested = length; -+ sec_insert_cell_ring (&block->used_cells, cell); - memory = sec_cell_to_memory (cell); - - #ifdef WITH_VALGRIND -@@ -555,47 +591,83 @@ sec_free (Block *block, void *memory) - #endif - - sec_check_guards (cell); -- sec_clear_memory (memory, 0, cell->allocated); -+ sec_clear_noaccess (memory, 0, cell->requested); - - sec_check_guards (cell); -- ASSERT (cell->next == NULL); -- ASSERT (cell->prev == NULL); -- ASSERT (cell->allocated > 0); -+ ASSERT (cell->requested > 0); -+ ASSERT (cell->tag != NULL); - -- /* Find previous unallocated neighbor, and merge if possible */ -- other = sec_neighbor_before (block, cell); -- if (other && other->allocated == 0) { -- ASSERT (other->next && other->prev); -- other->n_words += cell->n_words; -- sec_write_guards (other); -- pool_free (cell); -- cell = other; -- } -+ /* Remove from the used cell ring */ -+ sec_remove_cell_ring (&block->used_cells, cell); - -- /* Find next unallocated neighbor, and merge if possible */ -- other = sec_neighbor_after (block, cell); -- if (other && other->allocated == 0) { -- ASSERT (other->next && other->prev); -- other->n_words += cell->n_words; -- other->words = cell->words; -- if (cell->next) -- sec_remove_cell_ring (&block->unused, 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, 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->allocated = 0; -- --block->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 -+memcpy_with_vbits (void *dest, -+ void *src, -+ size_t length) -+{ -+#ifdef WITH_VALGRIND -+ int vbits_setup = 0; -+ void *vbits = NULL; -+ -+ if (RUNNING_ON_VALGRIND) { -+ vbits = malloc (length); -+ if (vbits != NULL) -+ vbits_setup = VALGRIND_GET_VBITS (src, vbits, length); -+ VALGRIND_MAKE_MEM_DEFINED (src, length); -+ } -+#endif -+ -+ memcpy (dest, src, length); -+ -+#ifdef WITH_VALGRIND -+ if (vbits_setup == 1) { -+ VALGRIND_SET_VBITS (dest, vbits, length); -+ VALGRIND_SET_VBITS (src, vbits, length); -+ } -+ free (vbits); -+#endif -+} -+ - static void* --sec_realloc (Block *block, void *memory, size_t length) -+sec_realloc (Block *block, -+ const char *tag, -+ void *memory, -+ size_t length) - { - Cell *cell, *other; - word_t *word; -@@ -606,6 +678,7 @@ sec_realloc (Block *block, void *memory, size_t length - /* Standard realloc behavior, should have been handled elsewhere */ - ASSERT (memory != NULL); - ASSERT (length > 0); -+ ASSERT (tag != NULL); - - /* Dig out where the meta should be */ - word = memory; -@@ -621,12 +694,11 @@ sec_realloc (Block *block, void *memory, size_t length - - /* Validate that it's actually for real */ - sec_check_guards (cell); -- ASSERT (cell->allocated > 0); -- ASSERT (cell->next == NULL); -- ASSERT (cell->prev == NULL); -+ ASSERT (cell->requested > 0); -+ ASSERT (cell->tag != NULL); - - /* The amount of valid data */ -- valid = cell->allocated; -+ valid = cell->requested; - - /* How many words we actually want */ - n_words = sec_size_to_words (length) + 2; -@@ -635,22 +707,18 @@ sec_realloc (Block *block, void *memory, size_t length - if (n_words <= cell->n_words) { - - /* TODO: No shrinking behavior yet */ -- cell->allocated = length; -+ cell->requested = length; - alloc = sec_cell_to_memory (cell); - --#ifdef WITH_VALGRIND -- VALGRIND_MAKE_MEM_DEFINED (alloc, length); --#endif -- - /* - * 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. - */ - if (length < valid) -- return sec_clear_memory (alloc, length, valid); -- else -- return alloc; -+ sec_clear_undefined (alloc, length, valid); -+ -+ return alloc; - } - - /* Need braaaaaiiiiiinsss... */ -@@ -658,14 +726,14 @@ sec_realloc (Block *block, void *memory, size_t length - - /* See if we have a neighbor who can give us some memory */ - other = sec_neighbor_after (block, cell); -- if (!other || other->allocated != 0) -+ 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; - sec_write_guards (cell); -- sec_remove_cell_ring (&block->unused, other); -+ sec_remove_cell_ring (&block->unused_cells, other); - pool_free (other); - - /* Steal from the neighbor */ -@@ -679,20 +747,17 @@ sec_realloc (Block *block, void *memory, size_t length - } - - if (cell->n_words >= n_words) { -- cell->allocated = length; -+ cell->requested = length; -+ cell->tag = tag; - alloc = sec_cell_to_memory (cell); -- --#ifdef WITH_VALGRIND -- VALGRIND_MAKE_MEM_DEFINED (alloc, length); --#endif -- -- return sec_clear_memory (alloc, valid, length); -+ sec_clear_undefined (alloc, valid, length); -+ return alloc; - } - - /* That didn't work, try alloc/free */ -- alloc = sec_alloc (block, length); -+ alloc = sec_alloc (block, tag, length); - if (alloc) { -- memcpy (alloc, memory, valid); -+ memcpy_with_vbits (alloc, memory, valid); - sec_free (block, memory); - } - -@@ -722,15 +787,14 @@ sec_allocated (Block *block, void *memory) - cell = *word; - - sec_check_guards (cell); -- ASSERT (cell->next == NULL); -- ASSERT (cell->prev == NULL); -- ASSERT (cell->allocated > 0); -+ ASSERT (cell->requested > 0); -+ ASSERT (cell->tag != NULL); - - #ifdef WITH_VALGRIND - VALGRIND_MAKE_MEM_NOACCESS (word, sizeof (word_t)); - #endif - -- return cell->allocated; -+ return cell->requested; - } - - static void -@@ -739,6 +803,11 @@ sec_validate (Block *block) - Cell *cell; - word_t *word, *last; - -+#ifdef WITH_VALGRIND -+ if (RUNNING_ON_VALGRIND) -+ return; -+#endif -+ - word = block->words; - last = word + block->n_words; - -@@ -753,15 +822,19 @@ sec_validate (Block *block) - sec_check_guards (cell); - - /* Is it an allocated block? */ -- if (cell->allocated > 0) { -- ASSERT (cell->next == NULL); -- ASSERT (cell->prev == NULL); -- ASSERT (cell->allocated <= (cell->n_words - 2) * sizeof (word_t)); -+ if (cell->requested > 0) { -+ ASSERT (cell->tag != NULL); -+ ASSERT (cell->next != NULL); -+ ASSERT (cell->prev != NULL); -+ ASSERT (cell->next->prev == cell); -+ ASSERT (cell->prev->next == cell); -+ ASSERT (cell->requested <= (cell->n_words - 2) * sizeof (word_t)); - -- /* An unused block */ -+ /* An unused block */ - } else { -- ASSERT (cell->next); -- ASSERT (cell->prev); -+ ASSERT (cell->tag == NULL); -+ ASSERT (cell->next != NULL); -+ ASSERT (cell->prev != NULL); - ASSERT (cell->next->prev == cell); - ASSERT (cell->prev->next == cell); - } -@@ -777,13 +850,15 @@ sec_validate (Block *block) - */ - - static void* --sec_acquire_pages (size_t *sz) -+sec_acquire_pages (size_t *sz, -+ const char *during_tag) - { - void *pages; - unsigned long pgsize; - - ASSERT (sz); - ASSERT (*sz); -+ ASSERT (during_tag); - - /* Make sure sz is a multiple of the page size */ - pgsize = getpagesize (); -@@ -792,18 +867,18 @@ sec_acquire_pages (size_t *sz) - #if defined(HAVE_MLOCK) - pages = mmap (0, *sz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); - if (pages == MAP_FAILED) { -- if (lock_warning && egg_secure_warnings) -- fprintf (stderr, "couldn't map %lu bytes of private memory: %s\n", -- (unsigned long)*sz, strerror (errno)); -- lock_warning = 0; -+ if (show_warning && egg_secure_warnings) -+ fprintf (stderr, "couldn't map %lu bytes of memory (%s): %s\n", -+ (unsigned long)*sz, during_tag, strerror (errno)); -+ show_warning = 0; - return NULL; - } - - if (mlock (pages, *sz) < 0) { -- if (lock_warning && egg_secure_warnings && errno != EPERM) { -- fprintf (stderr, "couldn't lock %lu bytes of private memory: %s\n", -- (unsigned long)*sz, strerror (errno)); -- lock_warning = 0; -+ if (show_warning && egg_secure_warnings && errno != EPERM) { -+ fprintf (stderr, "couldn't lock %lu bytes of memory (%s): %s\n", -+ (unsigned long)*sz, during_tag, strerror (errno)); -+ show_warning = 0; - } - munmap (pages, *sz); - return NULL; -@@ -811,13 +886,13 @@ sec_acquire_pages (size_t *sz) - - DEBUG_ALLOC ("gkr-secure-memory: new block ", *sz); - -- lock_warning = 1; -+ show_warning = 1; - return pages; - - #else -- if (lock_warning && egg_secure_warnings) -+ if (show_warning && egg_secure_warnings) - fprintf (stderr, "your system does not support private memory"); -- lock_warning = 0; -+ show_warning = 0; - return NULL; - #endif - -@@ -850,15 +925,17 @@ sec_release_pages (void *pages, size_t sz) - static Block *all_blocks = NULL; - - static Block* --sec_block_create (size_t size) -+sec_block_create (size_t size, -+ const char *during_tag) - { - Block *block; - Cell *cell; - --#if FORCE_FALLBACK_MEMORY -+ ASSERT (during_tag); -+ - /* We can force all all memory to be malloced */ -- return NULL; --#endif -+ if (getenv ("SECMEM_FORCE_FALLBACK")) -+ return NULL; - - block = pool_alloc (); - if (!block) -@@ -874,7 +951,7 @@ sec_block_create (size_t size) - if (size < DEFAULT_BLOCK_SIZE) - size = DEFAULT_BLOCK_SIZE; - -- block->words = sec_acquire_pages (&size); -+ block->words = sec_acquire_pages (&size, during_tag); - block->n_words = size / sizeof (word_t); - if (!block->words) { - pool_free (block); -@@ -889,9 +966,9 @@ sec_block_create (size_t size) - /* The first cell to allocate from */ - cell->words = block->words; - cell->n_words = block->n_words; -- cell->allocated = 0; -+ cell->requested = 0; - sec_write_guards (cell); -- sec_insert_cell_ring (&block->unused, cell); -+ sec_insert_cell_ring (&block->unused_cells, cell); - - block->next = all_blocks; - all_blocks = block; -@@ -907,7 +984,7 @@ sec_block_destroy (Block *block) - - ASSERT (block); - ASSERT (block->words); -- ASSERT (block->used == 0); -+ ASSERT (block->n_used == 0); - - /* Remove from the list */ - for (at = &all_blocks, bl = *at; bl; at = &bl->next, bl = *at) { -@@ -919,11 +996,12 @@ sec_block_destroy (Block *block) - - /* Must have been found */ - ASSERT (bl == block); -+ ASSERT (block->used_cells == NULL); - - /* Release all the meta data cells */ -- while (block->unused) { -- cell = block->unused; -- sec_remove_cell_ring (&block->unused, cell); -+ while (block->unused_cells) { -+ cell = block->unused_cells; -+ sec_remove_cell_ring (&block->unused_cells, cell); - pool_free (cell); - } - -@@ -938,17 +1016,16 @@ sec_block_destroy (Block *block) - */ - - void* --egg_secure_alloc (size_t length) -+egg_secure_alloc_full (const char *tag, -+ size_t length, -+ int flags) - { -- return egg_secure_alloc_full (length, GKR_SECURE_USE_FALLBACK); --} -- --void* --egg_secure_alloc_full (size_t length, int flags) --{ - Block *block; - void *memory = NULL; - -+ if (tag == NULL) -+ tag = "?"; -+ - if (length > 0xFFFFFFFF / 2) { - if (egg_secure_warnings) - fprintf (stderr, "tried to allocate an insane amount of memory: %lu\n", -@@ -963,16 +1040,16 @@ egg_secure_alloc_full (size_t length, int flags) - DO_LOCK (); - - for (block = all_blocks; block; block = block->next) { -- memory = sec_alloc (block, length); -+ memory = sec_alloc (block, tag, length); - if (memory) - break; - } - - /* None of the current blocks have space, allocate new */ - if (!memory) { -- block = sec_block_create (length); -+ block = sec_block_create (length, tag); - if (block) -- memory = sec_alloc (block, length); -+ memory = sec_alloc (block, tag, length); - } - - #ifdef WITH_VALGRIND -@@ -982,8 +1059,8 @@ egg_secure_alloc_full (size_t length, int flags) - - DO_UNLOCK (); - -- if (!memory && (flags & GKR_SECURE_USE_FALLBACK)) { -- memory = egg_memory_fallback (NULL, length); -+ if (!memory && (flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback != NULL) { -+ memory = EGG_SECURE_GLOBALS.fallback (NULL, length); - if (memory) /* Our returned memory is always zeroed */ - memset (memory, 0, length); - } -@@ -995,19 +1072,19 @@ egg_secure_alloc_full (size_t length, int flags) - } - - void* --egg_secure_realloc (void *memory, size_t length) -+egg_secure_realloc_full (const char *tag, -+ void *memory, -+ size_t length, -+ int flags) - { -- return egg_secure_realloc_full (memory, length, GKR_SECURE_USE_FALLBACK); --} -- --void* --egg_secure_realloc_full (void *memory, size_t length, int flags) --{ - Block *block = NULL; - size_t previous = 0; - int donew = 0; - void *alloc = NULL; - -+ if (tag == NULL) -+ tag = "?"; -+ - if (length > 0xFFFFFFFF / 2) { - if (egg_secure_warnings) - fprintf (stderr, "tried to allocate an insane amount of memory: %lu\n", -@@ -1016,7 +1093,7 @@ egg_secure_realloc_full (void *memory, size_t length, - } - - if (memory == NULL) -- return egg_secure_alloc_full (length, flags); -+ return egg_secure_alloc_full (tag, length, flags); - if (!length) { - egg_secure_free_full (memory, flags); - return NULL; -@@ -1034,7 +1111,7 @@ egg_secure_realloc_full (void *memory, size_t length, - VALGRIND_FREELIKE_BLOCK (memory, sizeof (word_t)); - #endif - -- alloc = sec_realloc (block, memory, length); -+ alloc = sec_realloc (block, tag, memory, length); - - #ifdef WITH_VALGRIND - /* Now tell valgrind about either the new block or old one */ -@@ -1050,31 +1127,31 @@ egg_secure_realloc_full (void *memory, size_t length, - if (block && !alloc) - donew = 1; - -- if (block && block->used == 0) -+ if (block && block->n_used == 0) - sec_block_destroy (block); - - DO_UNLOCK (); - - if (!block) { -- if ((flags & GKR_SECURE_USE_FALLBACK)) { -+ if ((flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback) { - /* - * In this case we can't zero the returned memory, - * because we don't know what the block size was. - */ -- return egg_memory_fallback (memory, length); -+ return EGG_SECURE_GLOBALS.fallback (memory, length); - } else { - if (egg_secure_warnings) -- fprintf (stderr, "memory does not belong to gnome-keyring: 0x%08lx\n", -+ fprintf (stderr, "memory does not belong to secure memory pool: 0x%08lx\n", - (unsigned long)memory); -- ASSERT (0 && "memory does does not belong to gnome-keyring"); -+ ASSERT (0 && "memory does does not belong to secure memory pool"); - return NULL; - } - } - - if (donew) { -- alloc = egg_secure_alloc_full (length, flags); -+ alloc = egg_secure_alloc_full (tag, length, flags); - if (alloc) { -- memcpy (alloc, memory, previous); -+ memcpy_with_vbits (alloc, memory, previous); - egg_secure_free_full (memory, flags); - } - } -@@ -1088,7 +1165,7 @@ egg_secure_realloc_full (void *memory, size_t length, - void - egg_secure_free (void *memory) - { -- egg_secure_free_full (memory, GKR_SECURE_USE_FALLBACK); -+ egg_secure_free_full (memory, EGG_SECURE_USE_FALLBACK); - } - - void -@@ -1109,26 +1186,26 @@ egg_secure_free_full (void *memory, int flags) - - #ifdef WITH_VALGRIND - /* We like valgrind's warnings, so give it a first whack at checking for errors */ -- if (block != NULL || !(flags & GKR_SECURE_USE_FALLBACK)) -+ if (block != NULL || !(flags & EGG_SECURE_USE_FALLBACK)) - VALGRIND_FREELIKE_BLOCK (memory, sizeof (word_t)); - #endif - - if (block != NULL) { - sec_free (block, memory); -- if (block->used == 0) -+ if (block->n_used == 0) - sec_block_destroy (block); - } - - DO_UNLOCK (); - - if (!block) { -- if ((flags & GKR_SECURE_USE_FALLBACK)) { -- egg_memory_fallback (memory, 0); -+ if ((flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback) { -+ EGG_SECURE_GLOBALS.fallback (memory, 0); - } else { - if (egg_secure_warnings) -- fprintf (stderr, "memory does not belong to gnome-keyring: 0x%08lx\n", -+ fprintf (stderr, "memory does not belong to secure memory pool: 0x%08lx\n", - (unsigned long)memory); -- ASSERT (0 && "memory does does not belong to gnome-keyring"); -+ ASSERT (0 && "memory does does not belong to secure memory pool"); - } - } - } -@@ -1164,26 +1241,78 @@ egg_secure_validate (void) - DO_UNLOCK (); - } - --void --egg_secure_dump_blocks (void) -+ -+static egg_secure_rec * -+records_for_ring (Cell *cell_ring, -+ egg_secure_rec *records, -+ unsigned int *count, -+ unsigned int *total) - { -+ egg_secure_rec *new_rec; -+ unsigned int allocated = *count; -+ Cell *cell; -+ -+ cell = cell_ring; -+ do { -+ if (*count >= allocated) { -+ new_rec = realloc (records, sizeof (egg_secure_rec) * (allocated + 32)); -+ if (new_rec == NULL) { -+ *count = 0; -+ free (records); -+ return NULL; -+ } else { -+ records = new_rec; -+ allocated += 32; -+ } -+ } -+ -+ if (cell != NULL) { -+ records[*count].request_length = cell->requested; -+ records[*count].block_length = cell->n_words * sizeof (word_t); -+ records[*count].tag = cell->tag; -+ (*count)++; -+ (*total) += cell->n_words; -+ cell = cell->next; -+ } -+ } while (cell != NULL && cell != cell_ring); -+ -+ return records; -+} -+ -+egg_secure_rec * -+egg_secure_records (unsigned int *count) -+{ -+ egg_secure_rec *records = NULL; - Block *block = NULL; -+ unsigned int total; - -+ *count = 0; -+ - DO_LOCK (); - -- /* Find out where it belongs to */ -- for (block = all_blocks; block; block = block->next) { -- fprintf (stderr, "----------------------------------------------------\n"); -- fprintf (stderr, " BLOCK at: 0x%08lx len: %lu\n", (unsigned long)block, -- (unsigned long)block->n_words * sizeof (word_t)); -- fprintf (stderr, "\n"); -+ for (block = all_blocks; block != NULL; block = block->next) { -+ total = 0; -+ -+ records = records_for_ring (block->unused_cells, records, count, &total); -+ if (records == NULL) -+ break; -+ records = records_for_ring (block->used_cells, records, count, &total); -+ if (records == NULL) -+ break; -+ -+ /* Make sure this actualy accounts for all memory */ -+ ASSERT (total == block->n_words); - } - - DO_UNLOCK (); -+ -+ return records; - } - - char* --egg_secure_strdup (const char *str) -+egg_secure_strdup_full (const char *tag, -+ const char *str, -+ int options) - { - size_t len; - char *res; -@@ -1192,11 +1321,33 @@ egg_secure_strdup (const char *str) - return NULL; - - len = strlen (str) + 1; -- res = (char*)egg_secure_alloc (len); -+ 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) - { -@@ -1205,11 +1356,11 @@ egg_secure_clear (void *p, size_t length) - if (p == NULL) - return; - -- vp = (volatile char*)p; -- while (length) { -- *vp = 0xAA; -- vp++; -- length--; -+ vp = (volatile char*)p; -+ while (length) { -+ *vp = 0xAA; -+ vp++; -+ length--; - } - } - -@@ -1231,5 +1382,5 @@ egg_secure_strfree (char *str) - */ - - egg_secure_strclear (str); -- egg_secure_free_full (str, GKR_SECURE_USE_FALLBACK); -+ egg_secure_free_full (str, EGG_SECURE_USE_FALLBACK); - } diff --git a/x11/gnome/libgnome-keyring/patches/patch-egg_egg-secure-memory_h b/x11/gnome/libgnome-keyring/patches/patch-egg_egg-secure-memory_h deleted file mode 100644 index 74e77f152e3..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-egg_egg-secure-memory_h +++ /dev/null @@ -1,114 +0,0 @@ -$OpenBSD: patch-egg_egg-secure-memory_h,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- egg/egg-secure-memory.h.orig Wed Jun 8 10:00:06 2011 -+++ egg/egg-secure-memory.h Sat Oct 27 14:36:16 2012 -@@ -40,46 +40,58 @@ - * secure memory between threads: - */ - --extern void egg_memory_lock (void); -+typedef struct { -+ void (* lock) (void); -+ void (* unlock) (void); -+ void * (* fallback) (void *pointer, -+ size_t length); -+ void * pool_data; -+ const char * pool_version; -+} egg_secure_glob; - --extern void egg_memory_unlock (void); -+#define EGG_SECURE_POOL_VER_STR "1.0" -+#define EGG_SECURE_GLOBALS SECMEM_pool_data_v1_0 - --/* -- * Allocation Fallbacks -- * -- * If we cannot allocate secure memory, then this function -- * (defined elsewhere) will be called which has a chance to -- * allocate other memory abort or do whatever. -- * -- * Same call semantics as realloc with regard to NULL and zeros -- */ --extern void* egg_memory_fallback (void *p, size_t length); -+#define EGG_SECURE_DEFINE_GLOBALS(lock, unlock, fallback) \ -+ egg_secure_glob EGG_SECURE_GLOBALS = { \ -+ lock, unlock, fallback, NULL, EGG_SECURE_POOL_VER_STR }; - --#define EGG_SECURE_GLIB_DEFINITIONS() \ -+#define EGG_SECURE_DEFINE_GLIB_GLOBALS() \ - static GStaticMutex memory_mutex = G_STATIC_MUTEX_INIT; \ -- void egg_memory_lock (void) \ -+ static void egg_memory_lock (void) \ - { g_static_mutex_lock (&memory_mutex); } \ -- void egg_memory_unlock (void) \ -+ static void egg_memory_unlock (void) \ - { g_static_mutex_unlock (&memory_mutex); } \ -- void* egg_memory_fallback (void *p, size_t sz) \ -- { return g_realloc (p, sz); } \ -+ EGG_SECURE_DEFINE_GLOBALS (egg_memory_lock, egg_memory_unlock, g_realloc); - -+extern egg_secure_glob EGG_SECURE_GLOBALS; -+ - /* - * Main functionality - * - * Allocations return NULL on failure. - */ - --#define GKR_SECURE_USE_FALLBACK 0x0001 -+#define EGG_SECURE_USE_FALLBACK 0x0001 - --void* egg_secure_alloc (size_t length); -+#define EGG_SECURE_DECLARE(tag) \ -+ static inline void* egg_secure_alloc (size_t length) { \ -+ return egg_secure_alloc_full (G_STRINGIFY (tag), length, EGG_SECURE_USE_FALLBACK); \ -+ } \ -+ static inline void* egg_secure_realloc (void *p, size_t length) { \ -+ return egg_secure_realloc_full (G_STRINGIFY (tag), p, length, EGG_SECURE_USE_FALLBACK); \ -+ } \ -+ 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 (size_t length, int flags); -+void* egg_secure_alloc_full (const char *tag, size_t length, int options); - --void* egg_secure_realloc (void *p, size_t length); -+void* egg_secure_realloc_full (const char *tag, void *p, size_t length, int options); - --void* egg_secure_realloc_full (void *p, size_t length, int fallback); -- - void egg_secure_free (void* p); - - void egg_secure_free_full (void* p, int fallback); -@@ -90,12 +102,20 @@ int egg_secure_check (const void* p); - - void egg_secure_validate (void); - --void egg_secure_dump_blocks (void); -+char* egg_secure_strdup_full (const char *tag, const char *str, int options); - --char* egg_secure_strdup (const char *str); -+char* egg_secure_strndup_full (const char *tag, const char *str, size_t length, int options); - - void egg_secure_strclear (char *str); - - void egg_secure_strfree (char *str); -+ -+typedef struct { -+ const char *tag; -+ size_t request_length; -+ size_t block_length; -+} egg_secure_rec; -+ -+egg_secure_rec * egg_secure_records (unsigned int *count); - - #endif /* EGG_SECURE_MEMORY_H */ diff --git a/x11/gnome/libgnome-keyring/patches/patch-egg_tests_Makefile_in b/x11/gnome/libgnome-keyring/patches/patch-egg_tests_Makefile_in deleted file mode 100644 index eaa45a8b309..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-egg_tests_Makefile_in +++ /dev/null @@ -1,17 +0,0 @@ -$OpenBSD: patch-egg_tests_Makefile_in,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 07667832e9840d3a46d4e1bc798f7171f8b3be51 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:49:47 +0000 -Subject: Share the secure memory pool with libsecret and gcr if in same process. - ---- egg/tests/Makefile.in.orig Sat Oct 27 14:39:25 2012 -+++ egg/tests/Makefile.in Sat Oct 27 14:39:52 2012 -@@ -313,6 +313,7 @@ top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - INCLUDES = \ -+ -I$(top_srcdir) \ - -I$(top_srcdir)/egg \ - $(LIBRARY_CFLAGS) - diff --git a/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-dh_c b/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-dh_c deleted file mode 100644 index 127c269e714..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-dh_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-egg_tests_test-dh_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- egg/tests/test-dh.c.orig Mon Sep 5 07:16:09 2011 -+++ egg/tests/test-dh.c Sat Oct 27 14:36:16 2012 -@@ -35,7 +35,7 @@ - #include <stdio.h> - #include <string.h> - --EGG_SECURE_GLIB_DEFINITIONS (); -+EGG_SECURE_DEFINE_GLIB_GLOBALS (); - - static void - test_dh_perform (void) diff --git a/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-hkdf_c b/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-hkdf_c deleted file mode 100644 index ee5eb064fe3..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-hkdf_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-egg_tests_test-hkdf_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- egg/tests/test-hkdf.c.orig Mon Sep 5 07:16:09 2011 -+++ egg/tests/test-hkdf.c Sat Oct 27 14:36:16 2012 -@@ -33,7 +33,7 @@ - - #include <gcrypt.h> - --EGG_SECURE_GLIB_DEFINITIONS (); -+EGG_SECURE_DEFINE_GLIB_GLOBALS (); - - static void - test_hkdf_test_case_1 (void) diff --git a/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-secmem_c b/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-secmem_c deleted file mode 100644 index 0be1f13108b..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-egg_tests_test-secmem_c +++ /dev/null @@ -1,174 +0,0 @@ -$OpenBSD: patch-egg_tests_test-secmem_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- egg/tests/test-secmem.c.orig Mon Sep 5 07:16:09 2011 -+++ egg/tests/test-secmem.c Sat Oct 27 14:36:16 2012 -@@ -23,7 +23,7 @@ - - #include "config.h" - --#include "egg-secure-memory.h" -+#include "egg/egg-secure-memory.h" - - #include <glib.h> - -@@ -31,11 +31,14 @@ - #include <stdio.h> - #include <string.h> - --EGG_SECURE_GLIB_DEFINITIONS (); - -+EGG_SECURE_DEFINE_GLIB_GLOBALS (); -+ - /* Declared in egg-secure-memory.c */ - extern int egg_secure_warnings; - -+EGG_SECURE_DECLARE (tests); -+ - /* - * Each test looks like (on one line): - * void unit_test_xxxxx (CuTest* cu) -@@ -68,7 +71,7 @@ test_alloc_free (void) - gpointer p; - gboolean ret; - -- p = egg_secure_alloc_full (512, 0); -+ p = egg_secure_alloc_full ("tests", 512, 0); - g_assert (p != NULL); - g_assert_cmpint (G_MAXSIZE, ==, find_non_zero (p, 512)); - -@@ -86,14 +89,16 @@ test_realloc_across (void) - gpointer p, p2; - - /* Tiny allocation */ -- p = egg_secure_realloc_full (NULL, 1088, 0); -+ p = egg_secure_realloc_full ("tests", NULL, 1088, 0); - 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 */ -- p2 = egg_secure_realloc_full (p, 16200, 0); -+ 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 -@@ -102,13 +107,13 @@ test_alloc_two (void) - gpointer p, p2; - gboolean ret; - -- p2 = egg_secure_alloc_full (4, 0); -+ p2 = egg_secure_alloc_full ("tests", 4, 0); - g_assert (p2 != NULL); - g_assert_cmpint (G_MAXSIZE, ==, find_non_zero (p2, 4)); - - memset (p2, 0x67, 4); - -- p = egg_secure_alloc_full (16200, 0); -+ p = egg_secure_alloc_full ("tests", 16200, 0); - g_assert (p != NULL); - g_assert_cmpint (G_MAXSIZE, ==, find_non_zero (p, 16200)); - -@@ -130,19 +135,19 @@ test_realloc (void) - - len = strlen (str) + 1; - -- p = egg_secure_realloc_full (NULL, len, 0); -+ p = egg_secure_realloc_full ("tests", NULL, len, 0); - g_assert (p != NULL); - g_assert_cmpint (G_MAXSIZE, ==, find_non_zero (p, len)); - - strcpy ((gchar*)p, str); - -- p2 = egg_secure_realloc_full (p, 512, 0); -+ p2 = egg_secure_realloc_full ("tests", p, 512, 0); - g_assert (p2 != NULL); - g_assert_cmpint (G_MAXSIZE, ==, find_non_zero (((gchar*)p2) + len, 512 - len)); - - g_assert (strcmp (p2, str) == 0); - -- p = egg_secure_realloc_full (p2, 0, 0); -+ p = egg_secure_realloc_full ("tests", p2, 0, 0); - g_assert (p == NULL); - } - -@@ -154,9 +159,6 @@ test_multialloc (void) - gsize size; - int i, action, index; - -- if (g_test_quick ()) -- return; -- - /* A predetermined seed to get a predetermined pattern */ - g_random_set_seed (15); - memory = g_ptr_array_new (); -@@ -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; -@@ -222,7 +225,7 @@ test_clear (void) - { - gpointer p; - -- p = egg_secure_alloc_full (188, 0); -+ p = egg_secure_alloc_full ("tests", 188, 0); - g_assert (p != NULL); - memset (p, 0x89, 188); - g_assert (memchr (p, 0x89, 188) == p); -@@ -255,9 +258,9 @@ main (int argc, char **argv) - { - g_test_init (&argc, &argv, NULL); - -- g_test_add_func ("/secmem/alloc-free", test_alloc_free); -- g_test_add_func ("/secmem/realloc-across", test_realloc_across); -- g_test_add_func ("/secmem/alloc-two", test_alloc_two); -+ g_test_add_func ("/secmem/alloc_free", test_alloc_free); -+ g_test_add_func ("/secmem/realloc_across", test_realloc_across); -+ g_test_add_func ("/secmem/alloc_two", test_alloc_two); - g_test_add_func ("/secmem/realloc", test_realloc); - g_test_add_func ("/secmem/multialloc", test_multialloc); - g_test_add_func ("/secmem/clear", test_clear); diff --git a/x11/gnome/libgnome-keyring/patches/patch-library_Makefile_in b/x11/gnome/libgnome-keyring/patches/patch-library_Makefile_in deleted file mode 100644 index 5cf02da9541..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-library_Makefile_in +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-library_Makefile_in,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 07667832e9840d3a46d4e1bc798f7171f8b3be51 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:49:47 +0000 -Subject: Share the secure memory pool with libsecret and gcr if in same process. - ---- library/Makefile.in.orig Sat Oct 27 14:40:01 2012 -+++ library/Makefile.in Sat Oct 27 14:40:29 2012 -@@ -435,7 +435,7 @@ libgnome_keyring_la_LIBADD = \ - - libgnome_keyring_la_LDFLAGS = \ - -version-info $(LIB_GNOME_KEYRING_LT_VERSION) \ -- -no-undefined -export-symbols-regex 'gnome_keyring_|GNOME_KEYRING_' -+ -no-undefined -export-symbols-regex '^gnome_keyring_|^GNOME_KEYRING_|^SECMEM_.*' - - noinst_LTLIBRARIES = libgnome-keyring-testable.la - libgnome_keyring_testable_la_SOURCES = diff --git a/x11/gnome/libgnome-keyring/patches/patch-library_gkr-session_c b/x11/gnome/libgnome-keyring/patches/patch-library_gkr-session_c deleted file mode 100644 index 2d3297b4128..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-library_gkr-session_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-library_gkr-session_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- library/gkr-session.c.orig Sat Mar 31 14:59:37 2012 -+++ library/gkr-session.c Sat Oct 27 14:36:16 2012 -@@ -44,6 +44,8 @@ struct _GkrSession { - G_LOCK_DEFINE_STATIC (session_globals); - static GkrSession *the_session; - -+EGG_SECURE_DECLARE (session); -+ - static guchar* - pkcs7_pad_string_in_secure_memory (const gchar *string, gsize *n_padded) - { diff --git a/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring-memory_c b/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring-memory_c deleted file mode 100644 index e28d9811567..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring-memory_c +++ /dev/null @@ -1,88 +0,0 @@ -$OpenBSD: patch-library_gnome-keyring-memory_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- library/gnome-keyring-memory.c.orig Sat Mar 31 14:59:37 2012 -+++ library/gnome-keyring-memory.c Sat Oct 27 14:36:16 2012 -@@ -62,19 +62,19 @@ static GStaticMutex memory_mutex = G_STATIC_MUTEX_INIT - * locking for memory between threads - */ - --void -+static void - egg_memory_lock (void) - { - g_static_mutex_lock (&memory_mutex); - } - --void -+static void - egg_memory_unlock (void) - { - g_static_mutex_unlock (&memory_mutex); - } - --void* -+static void * - egg_memory_fallback (void *p, size_t sz) - { - const gchar *env; -@@ -107,6 +107,10 @@ egg_memory_fallback (void *p, size_t sz) - return g_realloc (p, sz); - } - -+EGG_SECURE_DEFINE_GLOBALS (egg_memory_lock, egg_memory_unlock, egg_memory_fallback); -+ -+EGG_SECURE_DECLARE (libgnome_keyring_memory); -+ - /* ----------------------------------------------------------------------------- - * PUBLIC FUNCTIONS - */ -@@ -129,7 +133,7 @@ gnome_keyring_memory_alloc (gulong sz) - gpointer p; - - /* Try to allocate secure memory */ -- p = egg_secure_alloc_full (sz, GKR_SECURE_USE_FALLBACK); -+ p = egg_secure_alloc (sz); - - /* Our fallback will always allocate */ - g_assert (p); -@@ -151,7 +155,7 @@ gnome_keyring_memory_alloc (gulong sz) - gpointer - gnome_keyring_memory_try_alloc (gulong sz) - { -- return egg_secure_alloc_full (sz, 0); -+ return egg_secure_alloc_full ("libgnome_keyring_memory", sz, 0); - } - - /** -@@ -187,7 +191,7 @@ gnome_keyring_memory_realloc (gpointer p, gulong sz) - } - - /* First try and ask secure memory to reallocate */ -- n = egg_secure_realloc_full (p, sz, GKR_SECURE_USE_FALLBACK); -+ n = egg_secure_realloc (p, sz); - - g_assert (n); - -@@ -226,7 +230,7 @@ gnome_keyring_memory_try_realloc (gpointer p, gulong s - } - - /* First try and ask secure memory to reallocate */ -- n = egg_secure_realloc_full (p, sz, 0); -+ n = egg_secure_realloc_full ("libgnome_keyring_memory", p, sz, 0); - - g_assert (n); - -@@ -247,7 +251,7 @@ gnome_keyring_memory_free (gpointer p) - { - if (!p) - return; -- egg_secure_free_full (p, GKR_SECURE_USE_FALLBACK); -+ egg_secure_free (p); - } - - /** diff --git a/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring-utils_c b/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring-utils_c deleted file mode 100644 index 0508149313c..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring-utils_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-library_gnome-keyring-utils_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- library/gnome-keyring-utils.c.orig Fri Aug 17 12:15:17 2012 -+++ library/gnome-keyring-utils.c Sat Oct 27 14:36:16 2012 -@@ -32,6 +32,8 @@ - - #include "egg/egg-secure-memory.h" - -+EGG_SECURE_DECLARE (libgnome_keyring_utils); -+ - /** - * SECTION:gnome-keyring-result - * @title: Result Codes diff --git a/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring_c b/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring_c deleted file mode 100644 index 4a72469f73c..00000000000 --- a/x11/gnome/libgnome-keyring/patches/patch-library_gnome-keyring_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-library_gnome-keyring_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From ef43a082c190a9e30ef939eeb8fc87312c30bb42 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 10:21:46 +0000 -Subject: Merge updated secure memory code from libsecret - ---- library/gnome-keyring.c.orig Fri Aug 17 12:15:17 2012 -+++ library/gnome-keyring.c Sat Oct 27 14:36:16 2012 -@@ -51,6 +51,8 @@ - #include <sys/uio.h> - #include <stdarg.h> - -+EGG_SECURE_DECLARE (libgnome_keyring); -+ - typedef gboolean (*DecodeCallback) (DBusMessageIter *, gpointer); - - typedef gboolean (*DecodeDictCallback) (const gchar *, DBusMessageIter *, gpointer); diff --git a/x11/gnome/libsecret/Makefile b/x11/gnome/libsecret/Makefile index b82c30d88f7..d93188593eb 100644 --- a/x11/gnome/libsecret/Makefile +++ b/x11/gnome/libsecret/Makefile @@ -1,10 +1,10 @@ -# $OpenBSD: Makefile,v 1.16 2012/10/27 13:21:56 ajacoutot Exp $ +# $OpenBSD: Makefile,v 1.17 2012/11/10 10:15:34 ajacoutot Exp $ COMMENT= library for storing and retrieving passwords and secrets GNOME_PROJECT= libsecret GNOME_VERSION= 0.10 -REVISION= 2 +REVISION= 3 SHARED_LIBS += secret-1 0.0 # unknown @@ -42,4 +42,8 @@ pre-configure: ${SUBST_CMD} ${WRKSRC}/libsecret/tests/Makefile.in \ ${WRKSRC}/libsecret/tests/mock-service.c +# these files calls "python", libsecret/tests/{Makefile.in,mock-service.c} +pre-regress: + ln -sf ${MODPY_BIN} ${WRKDIR}/bin/python + .include <bsd.port.mk> diff --git a/x11/gnome/libsecret/patches/patch-egg_egg-secure-memory_c b/x11/gnome/libsecret/patches/patch-egg_egg-secure-memory_c deleted file mode 100644 index 0532f89492a..00000000000 --- a/x11/gnome/libsecret/patches/patch-egg_egg-secure-memory_c +++ /dev/null @@ -1,1070 +0,0 @@ -$OpenBSD: patch-egg_egg-secure-memory_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 7cea18071bd33d70834cc05b8bcdcaee05194270 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 09:58:13 +0000 -Subject: Bring over a new version of the secure memory code from gcr - ---- egg/egg-secure-memory.c.orig Wed Aug 8 07:48:07 2012 -+++ egg/egg-secure-memory.c Sat Oct 27 14:43:37 2012 -@@ -1,29 +1,29 @@ - /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ - /* egg-secure-memory.h - library for allocating memory that is non-pageable -- * -- * Copyright (C) 2007 Stefan Walter -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU Lesser General Public License as -- * published by the Free Software Foundation; either version 2.1 of -- * the License, or (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, but -- * WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * Lesser General Public License for more details. -- * -- * You should have received a copy of the GNU Lesser General Public -- * License along with this program; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -- * MA 02110-1301 USA -- * -- * Author: Stef Walter <stef@thewalter.net> -- */ - -+ Copyright (C) 2007 Stefan Walter -+ -+ The Gnome Keyring Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The Gnome Keyring Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the Gnome Library; see the file COPYING.LIB. If not, -+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. -+ -+ Author: Stef Walter <stef@memberwebs.com> -+*/ -+ - /* -- * 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,33 +59,33 @@ - /* 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 - - #define DO_LOCK() \ -- egg_memory_lock (); -- -+ EGG_SECURE_GLOBALS.lock (); -+ - #define DO_UNLOCK() \ -- egg_memory_unlock (); -+ EGG_SECURE_GLOBALS.unlock (); - --static int lock_warning = 1; -+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. - */ -@@ -163,21 +163,29 @@ typedef struct _Pool { - Item items[1]; /* Actual items hang off here */ - } Pool; - --static Pool *all_pools = NULL; -- --static void* -+static void * - pool_alloc (void) - { - Pool *pool; - void *pages, *item; - size_t len, i; -- -+ -+ if (!EGG_SECURE_GLOBALS.pool_version || -+ strcmp (EGG_SECURE_GLOBALS.pool_version, EGG_SECURE_POOL_VER_STR) != 0) { -+ if (show_warning && egg_secure_warnings) -+ fprintf (stderr, "the secure memory pool version does not match the code '%s' != '%s'\n", -+ EGG_SECURE_GLOBALS.pool_version ? EGG_SECURE_GLOBALS.pool_version : "(null)", -+ EGG_SECURE_POOL_VER_STR); -+ show_warning = 0; -+ return NULL; -+ } -+ - /* A pool with an available item */ -- for (pool = all_pools; pool; pool = pool->next) { -+ for (pool = EGG_SECURE_GLOBALS.pool_data; pool; pool = pool->next) { - if (unused_peek (&pool->unused)) - break; - } -- -+ - /* Create a new pool */ - if (pool == NULL) { - len = getpagesize () * 2; -@@ -187,8 +195,8 @@ pool_alloc (void) - - /* Fill in the block header, and inlude in block list */ - pool = pages; -- pool->next = all_pools; -- all_pools = pool; -+ pool->next = EGG_SECURE_GLOBALS.pool_data; -+ EGG_SECURE_GLOBALS.pool_data = pool; - pool->length = len; - pool->used = 0; - pool->unused = NULL; -@@ -197,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 -@@ -219,11 +227,12 @@ pool_free (void* item) - { - Pool *pool, **at; - char *ptr, *beg, *end; -- -+ - ptr = item; -- -+ - /* Find which block this one belongs to */ -- for (at = &all_pools, pool = *at; pool; at = &pool->next, pool = *at) { -+ for (at = (Pool **)&EGG_SECURE_GLOBALS.pool_data, pool = *at; -+ pool != NULL; at = &pool->next, pool = *at) { - beg = (char*)pool->items; - end = (char*)pool + pool->length - sizeof (Item); - if (ptr >= beg && ptr <= end) { -@@ -266,17 +275,17 @@ pool_valid (void* item) - { - Pool *pool; - char *ptr, *beg, *end; -- -+ - ptr = item; -- -+ - /* Find which block this one belongs to */ -- for (pool = all_pools; pool; pool = pool->next) { -+ 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; - } - -@@ -284,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. - */ - -@@ -306,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 -@@ -318,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 -@@ -338,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; -@@ -349,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); -@@ -382,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); - } - -@@ -431,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; -@@ -442,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); - -@@ -453,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; -@@ -471,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 -@@ -487,7 +496,7 @@ sec_alloc (Block *block, - Cell *cell, *other; - size_t n_words; - void *memory; -- -+ - ASSERT (block); - ASSERT (length); - ASSERT (tag); -@@ -495,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) { -@@ -514,7 +523,7 @@ sec_alloc (Block *block, - break; - } - } -- -+ - if (!cell) - return NULL; - -@@ -523,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 (); -@@ -533,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); - -@@ -548,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); - } - -@@ -561,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 -@@ -591,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 -@@ -674,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 -@@ -682,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); -@@ -701,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) { - -@@ -719,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; -@@ -736,7 +745,7 @@ sec_realloc (Block *block, - sec_write_guards (cell); - } - } -- -+ - if (cell->n_words >= n_words) { - cell->requested = length; - cell->tag = tag; -@@ -751,7 +760,7 @@ sec_realloc (Block *block, - memcpy_with_vbits (alloc, memory, valid); - sec_free (block, memory); - } -- -+ - return alloc; - } - -@@ -761,7 +770,7 @@ sec_allocated (Block *block, void *memory) - { - Cell *cell; - word_t *word; -- -+ - ASSERT (block); - ASSERT (memory); - -@@ -771,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); -@@ -808,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); -@@ -820,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); -@@ -829,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; -@@ -846,7 +855,7 @@ sec_acquire_pages (size_t *sz, - { - void *pages; - unsigned long pgsize; -- -+ - ASSERT (sz); - ASSERT (*sz); - ASSERT (during_tag); -@@ -854,56 +863,56 @@ 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) { -- if (lock_warning && egg_secure_warnings) -+ if (show_warning && egg_secure_warnings) - fprintf (stderr, "couldn't map %lu bytes of memory (%s): %s\n", - (unsigned long)*sz, during_tag, strerror (errno)); -- lock_warning = 0; -+ show_warning = 0; - return NULL; - } -- -+ - if (mlock (pages, *sz) < 0) { -- if (lock_warning && egg_secure_warnings && errno != EPERM) { -+ if (show_warning && egg_secure_warnings && errno != EPERM) { - fprintf (stderr, "couldn't lock %lu bytes of memory (%s): %s\n", - (unsigned long)*sz, during_tag, strerror (errno)); -- lock_warning = 0; -+ show_warning = 0; - } - munmap (pages, *sz); - return NULL; - } -- -+ - DEBUG_ALLOC ("gkr-secure-memory: new block ", *sz); -- -- lock_warning = 1; -+ -+ show_warning = 1; - return pages; -- -+ - #else -- if (lock_warning && egg_secure_warnings) -+ if (show_warning && egg_secure_warnings) - fprintf (stderr, "your system does not support private memory"); -- lock_warning = 0; -+ show_warning = 0; - return NULL; - #endif - - } - --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 -@@ -915,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) - { -@@ -941,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) { -@@ -949,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; -@@ -963,7 +972,7 @@ sec_block_create (size_t size, - - block->next = all_blocks; - all_blocks = block; -- -+ - return block; - } - -@@ -976,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) { -@@ -984,7 +993,7 @@ sec_block_destroy (Block *block) - break; - } - } -- -+ - /* Must have been found */ - ASSERT (bl == block); - ASSERT (block->used_cells == NULL); -@@ -995,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)); - -@@ -1019,46 +1028,46 @@ 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)) { -- memory = egg_memory_fallback (NULL, length); -+ if (!memory && (flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback != NULL) { -+ memory = EGG_SECURE_GLOBALS.fallback (NULL, length); - if (memory) /* Our returned memory is always zeroed */ - memset (memory, 0, length); - } -- -+ - if (!memory) - errno = ENOMEM; -- -+ - return memory; - } - -@@ -1078,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)) { -@@ -1106,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; - } - } -@@ -1120,21 +1129,21 @@ 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)) { -- /* -- * In this case we can't zero the returned memory, -+ if ((flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback) { -+ /* -+ * In this case we can't zero the returned memory, - * because we don't know what the block size was. - */ -- return egg_memory_fallback (memory, length); -+ return EGG_SECURE_GLOBALS.fallback (memory, length); - } else { - if (egg_secure_warnings) -- fprintf (stderr, "memory does not belong to gnome-keyring: 0x%08lx\n", -+ fprintf (stderr, "memory does not belong to secure memory pool: 0x%08lx\n", - (unsigned long)memory); -- ASSERT (0 && "memory does does not belong to gnome-keyring"); -+ ASSERT (0 && "memory does does not belong to secure memory pool"); - return NULL; - } - } -@@ -1146,7 +1155,7 @@ egg_secure_realloc_full (const char *tag, - egg_secure_free_full (memory, flags); - } - } -- -+ - if (!alloc) - errno = ENOMEM; - -@@ -1163,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)) -@@ -1186,49 +1195,49 @@ 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_memory_fallback (memory, 0); -+ if ((flags & EGG_SECURE_USE_FALLBACK) && EGG_SECURE_GLOBALS.fallback) { -+ EGG_SECURE_GLOBALS.fallback (memory, 0); - } else { - if (egg_secure_warnings) -- fprintf (stderr, "memory does not belong to gnome-keyring: 0x%08lx\n", -+ fprintf (stderr, "memory does not belong to secure memory pool: 0x%08lx\n", - (unsigned long)memory); -- ASSERT (0 && "memory does does not belong to gnome-keyring"); -+ 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 (); - } - -@@ -1311,7 +1320,7 @@ 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; -@@ -1343,10 +1352,10 @@ void - egg_secure_clear (void *p, size_t length) - { - volatile char *vp; -- -+ - if (p == NULL) - return; -- -+ - vp = (volatile char*)p; - while (length) { - *vp = 0xAA; -@@ -1368,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/x11/gnome/libsecret/patches/patch-egg_egg-secure-memory_h b/x11/gnome/libsecret/patches/patch-egg_egg-secure-memory_h deleted file mode 100644 index b268000e8c8..00000000000 --- a/x11/gnome/libsecret/patches/patch-egg_egg-secure-memory_h +++ /dev/null @@ -1,153 +0,0 @@ -$OpenBSD: patch-egg_egg-secure-memory_h,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 7cea18071bd33d70834cc05b8bcdcaee05194270 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 09:58:13 +0000 -Subject: Bring over a new version of the secure memory code from gcr - ---- egg/egg-secure-memory.h.orig Wed Aug 8 07:48:07 2012 -+++ egg/egg-secure-memory.h Sat Oct 27 14:43:37 2012 -@@ -1,75 +1,77 @@ - /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ - /* egg-secure-memory.h - library for allocating memory that is non-pageable -- * -- * Copyright (C) 2007 Stefan Walter -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU Lesser General Public License as -- * published by the Free Software Foundation; either version 2.1 of -- * the License, or (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, but -- * WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * Lesser General Public License for more details. -- * -- * You should have received a copy of the GNU Lesser General Public -- * License along with this program; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -- * MA 02110-1301 USA -- * -- * Author: Stef Walter <stef@thewalter.net> -- */ - -+ Copyright (C) 2007 Stefan Walter -+ -+ The Gnome Keyring Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The Gnome Keyring Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the Gnome Library; see the file COPYING.LIB. If not, -+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. -+ -+ Author: Stef Walter <stef@memberwebs.com> -+*/ -+ - #ifndef EGG_SECURE_MEMORY_H - #define EGG_SECURE_MEMORY_H - - #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: - */ -- --extern void egg_memory_lock (void); - --extern void egg_memory_unlock (void); -+typedef struct { -+ void (* lock) (void); -+ void (* unlock) (void); -+ void * (* fallback) (void *pointer, -+ size_t length); -+ void * pool_data; -+ const char * pool_version; -+} egg_secure_glob; - --/* -- * Allocation Fallbacks -- * -- * If we cannot allocate secure memory, then this function -- * (defined elsewhere) will be called which has a chance to -- * allocate other memory abort or do whatever. -- * -- * Same call semantics as realloc with regard to NULL and zeros -- */ --extern void* egg_memory_fallback (void *p, size_t length); -+#define EGG_SECURE_POOL_VER_STR "1.0" -+#define EGG_SECURE_GLOBALS SECMEM_pool_data_v1_0 - --#define EGG_SECURE_GLIB_DEFINITIONS() \ -+#define EGG_SECURE_DEFINE_GLOBALS(lock, unlock, fallback) \ -+ egg_secure_glob EGG_SECURE_GLOBALS = { \ -+ lock, unlock, fallback, NULL, EGG_SECURE_POOL_VER_STR }; -+ -+#define EGG_SECURE_DEFINE_GLIB_GLOBALS() \ - static GStaticMutex memory_mutex = G_STATIC_MUTEX_INIT; \ -- void egg_memory_lock (void) \ -+ static void egg_memory_lock (void) \ - { g_static_mutex_lock (&memory_mutex); } \ -- void egg_memory_unlock (void) \ -+ static void egg_memory_unlock (void) \ - { g_static_mutex_unlock (&memory_mutex); } \ -- void* egg_memory_fallback (void *p, size_t sz) \ -- { return g_realloc (p, sz); } \ -+ EGG_SECURE_DEFINE_GLOBALS (egg_memory_lock, egg_memory_unlock, g_realloc); - --/* -+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) \ -@@ -90,13 +92,13 @@ void* egg_secure_alloc_full (const char *tag, size_ - - 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); - diff --git a/x11/gnome/libsecret/patches/patch-egg_tests_test-dh_c b/x11/gnome/libsecret/patches/patch-egg_tests_test-dh_c deleted file mode 100644 index 5f3f7f9c66c..00000000000 --- a/x11/gnome/libsecret/patches/patch-egg_tests_test-dh_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-egg_tests_test-dh_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 7cea18071bd33d70834cc05b8bcdcaee05194270 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 09:58:13 +0000 -Subject: Bring over a new version of the secure memory code from gcr - ---- egg/tests/test-dh.c.orig Thu Sep 15 10:57:03 2011 -+++ egg/tests/test-dh.c Sat Oct 27 14:43:37 2012 -@@ -34,7 +34,7 @@ - #include <glib.h> - #include <gcrypt.h> - --EGG_SECURE_GLIB_DEFINITIONS (); -+EGG_SECURE_DEFINE_GLIB_GLOBALS (); - - static void - test_perform (void) diff --git a/x11/gnome/libsecret/patches/patch-egg_tests_test-hkdf_c b/x11/gnome/libsecret/patches/patch-egg_tests_test-hkdf_c deleted file mode 100644 index f7c653a0c89..00000000000 --- a/x11/gnome/libsecret/patches/patch-egg_tests_test-hkdf_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-egg_tests_test-hkdf_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 7cea18071bd33d70834cc05b8bcdcaee05194270 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 09:58:13 +0000 -Subject: Bring over a new version of the secure memory code from gcr - ---- egg/tests/test-hkdf.c.orig Sun Sep 25 21:10:18 2011 -+++ egg/tests/test-hkdf.c Sat Oct 27 14:43:37 2012 -@@ -33,7 +33,7 @@ - - #include <gcrypt.h> - --EGG_SECURE_GLIB_DEFINITIONS (); -+EGG_SECURE_DEFINE_GLIB_GLOBALS (); - - static void - test_hkdf_test_case_1 (void) diff --git a/x11/gnome/libsecret/patches/patch-egg_tests_test-secmem_c b/x11/gnome/libsecret/patches/patch-egg_tests_test-secmem_c deleted file mode 100644 index a92791c0678..00000000000 --- a/x11/gnome/libsecret/patches/patch-egg_tests_test-secmem_c +++ /dev/null @@ -1,77 +0,0 @@ -$OpenBSD: patch-egg_tests_test-secmem_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 7cea18071bd33d70834cc05b8bcdcaee05194270 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 09:58:13 +0000 -Subject: Bring over a new version of the secure memory code from gcr - ---- egg/tests/test-secmem.c.orig Sun Nov 6 13:38:56 2011 -+++ egg/tests/test-secmem.c Sat Oct 27 14:43:37 2012 -@@ -32,14 +32,14 @@ - #include <string.h> - - --EGG_SECURE_GLIB_DEFINITIONS (); -+EGG_SECURE_DEFINE_GLIB_GLOBALS (); - - /* Declared in egg-secure-memory.c */ - extern int egg_secure_warnings; - - EGG_SECURE_DECLARE (tests); - --/* -+/* - * Each test looks like (on one line): - * void unit_test_xxxxx (CuTest* cu) - * -@@ -93,7 +93,7 @@ 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)); -@@ -182,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 (); -@@ -214,7 +213,8 @@ test_multialloc (void) - } - - g_assert (memory->len == 0); -- g_ptr_array_set_free_func (memory, egg_secure_free); -+ 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/x11/gnome/libsecret/patches/patch-libsecret_secret-attributes_c b/x11/gnome/libsecret/patches/patch-libsecret_secret-attributes_c deleted file mode 100644 index c0827903d3d..00000000000 --- a/x11/gnome/libsecret/patches/patch-libsecret_secret-attributes_c +++ /dev/null @@ -1,50 +0,0 @@ -$OpenBSD: patch-libsecret_secret-attributes_c,v 1.1 2012/10/16 06:55:21 ajacoutot Exp $ - -From 7e02a594a77c2730efcc13dd141cc78e201cd7e3 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Fri, 12 Oct 2012 09:27:34 +0000 -Subject: Better critical preconditions for invalid attributes - ---- libsecret/secret-attributes.c.orig Wed Aug 8 07:48:25 2012 -+++ libsecret/secret-attributes.c Tue Oct 16 08:50:16 2012 -@@ -153,7 +153,7 @@ secret_attributes_buildv (const SecretSchema *schema, - } - - if (!type_found) { -- g_warning ("The attribute '%s' was not found in the password schema.", attribute_name); -+ g_critical ("The attribute '%s' was not found in the password schema.", attribute_name); - g_hash_table_unref (attributes); - return NULL; - } -@@ -165,8 +165,12 @@ secret_attributes_buildv (const SecretSchema *schema, - break; - case SECRET_SCHEMA_ATTRIBUTE_STRING: - string = va_arg (va, gchar *); -+ if (string == NULL) { -+ g_critical ("The value for attribute '%s' was NULL", attribute_name); -+ return NULL; -+ } - if (!g_utf8_validate (string, -1, NULL)) { -- g_warning ("The value for attribute '%s' was not a valid utf-8 string.", attribute_name); -+ g_critical ("The value for attribute '%s' was not a valid UTF-8 string.", attribute_name); - g_hash_table_unref (attributes); - return NULL; - } -@@ -177,7 +181,7 @@ secret_attributes_buildv (const SecretSchema *schema, - value = g_strdup_printf ("%d", integer); - break; - default: -- g_warning ("The password attribute '%s' has an invalid type in the password schema.", attribute_name); -+ g_critical ("The password attribute '%s' has an invalid type in the password schema.", attribute_name); - g_hash_table_unref (attributes); - return NULL; - } -@@ -220,7 +224,7 @@ _secret_attributes_validate (const SecretSchema *schem - } - - if (attribute == NULL) { -- g_critical ("%s: invalid %s attribute in for %s schema", -+ g_critical ("%s: invalid %s attribute for %s schema", - pretty_function, key, schema->name); - return FALSE; - } diff --git a/x11/gnome/libsecret/patches/patch-libsecret_secret-password_c b/x11/gnome/libsecret/patches/patch-libsecret_secret-password_c deleted file mode 100644 index f03aa523a01..00000000000 --- a/x11/gnome/libsecret/patches/patch-libsecret_secret-password_c +++ /dev/null @@ -1,86 +0,0 @@ -$OpenBSD: patch-libsecret_secret-password_c,v 1.1 2012/10/16 06:55:21 ajacoutot Exp $ - -From 7e02a594a77c2730efcc13dd141cc78e201cd7e3 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Fri, 12 Oct 2012 09:27:34 +0000 -Subject: Better critical preconditions for invalid attributes - ---- libsecret/secret-password.c.orig Wed Aug 8 07:48:25 2012 -+++ libsecret/secret-password.c Tue Oct 16 08:50:16 2012 -@@ -94,6 +94,10 @@ secret_password_store (const SecretSchema *schema, - attributes = secret_attributes_buildv (schema, va); - va_end (va); - -+ /* Precondition failed, already warned */ -+ if (!attributes) -+ return; -+ - secret_password_storev (schema, attributes, collection, label, password, - cancellable, callback, user_data); - -@@ -225,6 +229,10 @@ secret_password_store_sync (const SecretSchema *schema - attributes = secret_attributes_buildv (schema, va); - va_end (va); - -+ /* Precondition failed, already warned */ -+ if (!attributes) -+ return FALSE; -+ - ret = secret_password_storev_sync (schema, attributes, collection, - label, password, cancellable, error); - -@@ -335,6 +343,10 @@ secret_password_lookup (const SecretSchema *schema, - attributes = secret_attributes_buildv (schema, va); - va_end (va); - -+ /* Precondition failed, already warned */ -+ if (!attributes) -+ return; -+ - secret_password_lookupv (schema, attributes, cancellable, - callback, user_data); - -@@ -468,6 +480,10 @@ secret_password_lookup_sync (const SecretSchema *schem - attributes = secret_attributes_buildv (schema, va); - va_end (va); - -+ /* Precondition failed, already warned */ -+ if (!attributes) -+ return NULL; -+ - password = secret_password_lookupv_sync (schema, attributes, - cancellable, error); - -@@ -516,6 +532,10 @@ secret_password_lookup_nonpageable_sync (const SecretS - attributes = secret_attributes_buildv (schema, va); - va_end (va); - -+ /* Precondition failed, already warned */ -+ if (!attributes) -+ return NULL; -+ - password = secret_password_lookupv_nonpageable_sync (schema, attributes, - cancellable, error); - -@@ -668,6 +688,10 @@ secret_password_clear (const SecretSchema *schema, - attributes = secret_attributes_buildv (schema, va); - va_end (va); - -+ /* Precondition failed, already warned */ -+ if (!attributes) -+ return; -+ - secret_password_clearv (schema, attributes, cancellable, - callback, user_data); - -@@ -768,6 +792,10 @@ secret_password_clear_sync (const SecretSchema* schema - va_start (va, error); - attributes = secret_attributes_buildv (schema, va); - va_end (va); -+ -+ /* Precondition failed, already warned */ -+ if (!attributes) -+ return FALSE; - - result = secret_password_clearv_sync (schema, attributes, - cancellable, error); diff --git a/x11/gnome/libsecret/patches/patch-libsecret_secret-service_c b/x11/gnome/libsecret/patches/patch-libsecret_secret-service_c deleted file mode 100644 index 651c2e68a67..00000000000 --- a/x11/gnome/libsecret/patches/patch-libsecret_secret-service_c +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-libsecret_secret-service_c,v 1.1 2012/10/27 13:21:56 ajacoutot Exp $ - -From 7cea18071bd33d70834cc05b8bcdcaee05194270 Mon Sep 17 00:00:00 2001 -From: Stef Walter <stefw@gnome.org> -Date: Sat, 27 Oct 2012 09:58:13 +0000 -Subject: Bring over a new version of the secure memory code from gcr - ---- libsecret/secret-service.c.orig Wed Aug 8 07:48:25 2012 -+++ libsecret/secret-service.c Sat Oct 27 14:43:37 2012 -@@ -104,7 +104,7 @@ - * during a secret_service_get() or secret_service_new() operation. - */ - --EGG_SECURE_GLIB_DEFINITIONS (); -+EGG_SECURE_DEFINE_GLIB_GLOBALS (); - - GQuark _secret_error_quark = 0; - diff --git a/x11/gnome/libsecret/patches/patch-libsecret_tests_Makefile_in b/x11/gnome/libsecret/patches/patch-libsecret_tests_Makefile_in deleted file mode 100644 index 568d0d6aab3..00000000000 --- a/x11/gnome/libsecret/patches/patch-libsecret_tests_Makefile_in +++ /dev/null @@ -1,12 +0,0 @@ -$OpenBSD: patch-libsecret_tests_Makefile_in,v 1.3 2012/09/18 12:43:08 ajacoutot Exp $ ---- libsecret/tests/Makefile.in.orig Tue Sep 18 12:45:15 2012 -+++ libsecret/tests/Makefile.in Tue Sep 18 14:38:45 2012 -@@ -1026,7 +1026,7 @@ test-js: - @for js in $(JS_TESTS); do echo "TEST: $$js"; $(JS_ENV) gjs $(srcdir)/$$js; done - - test-py: -- @for py in $(PY_TESTS); do echo "TEST: $$py"; $(PY_ENV) python $(srcdir)/$$py; done -+ @for py in $(PY_TESTS); do echo "TEST: $$py"; $(PY_ENV) ${MODPY_BIN} $(srcdir)/$$py; done - - test: test-c test-py test-js $(VALA_TEST_TARGET) - diff --git a/x11/gnome/libsecret/patches/patch-libsecret_tests_mock-service_c b/x11/gnome/libsecret/patches/patch-libsecret_tests_mock-service_c deleted file mode 100644 index ceecceaea31..00000000000 --- a/x11/gnome/libsecret/patches/patch-libsecret_tests_mock-service_c +++ /dev/null @@ -1,12 +0,0 @@ -$OpenBSD: patch-libsecret_tests_mock-service_c,v 1.1 2012/07/14 07:51:47 ajacoutot Exp $ ---- libsecret/tests/mock-service.c.orig Sat Jul 14 09:36:08 2012 -+++ libsecret/tests/mock-service.c Sat Jul 14 09:36:18 2012 -@@ -36,7 +36,7 @@ mock_service_start (const gchar *mock_script, - gint polled; - - gchar *argv[] = { -- "python", (gchar *)mock_script, -+ "${MODPY_BIN}", (gchar *)mock_script, - "--name", MOCK_SERVICE_NAME, - "--ready", ready, - NULL