Index: gtk+-2/gtksecentry.c =================================================================== --- gtk+-2/gtksecentry.c (revision 180) +++ gtk+-2/gtksecentry.c (working copy) @@ -256,7 +256,7 @@ static GtkWidgetClass *parent_class = NULL; -gboolean g_use_secure_mem = FALSE; +extern gboolean g_use_secure_mem; # define g_sec_new(type, count) \ ((type *) g_sec_malloc ((unsigned) sizeof (type) * (count))) @@ -269,85 +269,6 @@ } while(0) -gpointer -g_malloc(gulong size) -{ - gpointer p; - - if (size == 0) - return NULL; - - if (g_use_secure_mem) - p = (gpointer) secmem_malloc(size); - else - p = (gpointer) malloc(size); - if (!p) - g_error("could not allocate %ld bytes", size); - - return p; -} - -gpointer -g_malloc0(gulong size) -{ - gpointer p; - - if (size == 0) - return NULL; - - if (g_use_secure_mem) { - p = (gpointer) secmem_malloc(size); - if (p) - memset(p, 0, size); - } else - p = (gpointer) calloc(size, 1); - if (!p) - g_error("could not allocate %ld bytes", size); - - return p; -} - -gpointer -g_realloc(gpointer mem, gulong size) -{ - gpointer p; - - if (size == 0) { - g_free(mem); - - return NULL; - } - - if (!mem) { - if (g_use_secure_mem) - p = (gpointer) secmem_malloc(size); - else - p = (gpointer) malloc(size); - } else { - if (g_use_secure_mem) { - g_assert(m_is_secure(mem)); - p = (gpointer) secmem_realloc(mem, size); - } else - p = (gpointer) realloc(mem, size); - } - - if (!p) - g_error("could not reallocate %lu bytes", (gulong) size); - - return p; -} - -void -g_free(gpointer mem) -{ - if (mem) { - if (m_is_secure(mem)) - secmem_free(mem); - else - free(mem); - } -} - GType gtk_secure_entry_get_type(void) { Index: gtk+-2/pinentry-gtk-2.c =================================================================== --- gtk+-2/pinentry-gtk-2.c (revision 180) +++ gtk+-2/pinentry-gtk-2.c (working copy) @@ -39,6 +39,7 @@ #include "gtksecentry.h" #include "pinentry.h" +#include "memory.h" #ifdef FALLBACK_CURSES #include "pinentry-curses.h" @@ -469,12 +470,36 @@ pinentry_cmd_handler_t pinentry_cmd_handler = gtk_cmd_handler; +gboolean g_use_secure_mem = FALSE; +static gpointer +_malloc(gsize size) { + return g_use_secure_mem ? secmem_malloc(size) : malloc(size); +} + +static gpointer +_realloc(gpointer p, gsize size) { + return m_is_secure(p) ? secmem_realloc(p, size) : realloc(p, size); +} + +static void +_free(gpointer p) { + m_is_secure(p) ? secmem_free(p) : free(p); +} + int main (int argc, char *argv[]) { pinentry_init (PGMNAME); - + + GMemVTable mem_vtable = { + _malloc, + _realloc, + _free + }; + + g_mem_set_vtable (&mem_vtable); + #ifdef FALLBACK_CURSES if (pinentry_have_display (argc, argv)) gtk_init (&argc, &argv);