diff options
Diffstat (limited to 'security/pinentry/files/patch-gtk2-gmem')
-rw-r--r-- | security/pinentry/files/patch-gtk2-gmem | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/security/pinentry/files/patch-gtk2-gmem b/security/pinentry/files/patch-gtk2-gmem new file mode 100644 index 000000000000..fb640e6ad836 --- /dev/null +++ b/security/pinentry/files/patch-gtk2-gmem @@ -0,0 +1,145 @@ +--- gtk+-2/gtksecentry.c.orig 2007-11-19 16:20:50.000000000 +0500 ++++ gtk+-2/gtksecentry.c 2008-04-26 22:52:13.000000000 +0600 +@@ -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) + { +--- gtk+-2/pinentry-gtk-2.c.orig 2007-11-19 16:44:07.000000000 +0500 ++++ gtk+-2/pinentry-gtk-2.c 2008-04-26 22:52:13.000000000 +0600 +@@ -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); |