diff options
Diffstat (limited to 'app-crypt/pinentry/files/pinentry-0.9.2-management.patch')
-rw-r--r-- | app-crypt/pinentry/files/pinentry-0.9.2-management.patch | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/app-crypt/pinentry/files/pinentry-0.9.2-management.patch b/app-crypt/pinentry/files/pinentry-0.9.2-management.patch deleted file mode 100644 index 04b2bafe4650..000000000000 --- a/app-crypt/pinentry/files/pinentry-0.9.2-management.patch +++ /dev/null @@ -1,136 +0,0 @@ -From bdd81974633f8e31d582b62999ef9b004bc3b95e Mon Sep 17 00:00:00 2001 -From: "Neal H. Walfield" <neal@gnu.org> -Date: Wed, 13 May 2015 13:52:03 +0200 -Subject: [PATCH 1/1] Make the management of pinentry.pin more explicit. - -* pinentry/pinentry.c: Include <assert.h>. -(pinentry): Set pin_len to 0. -(pinentry_setbufferlen): If len is less than 2048, set it to 2048. -Add an assertion. -(pinentry_setbuffer_clear): New function that releases the pin buffer. -(pinentry_setbuffer_init): New function that initializes the pin -buffer. -(cmd_getpin): Use pinentry_setbuffer_init and pinentry_setbuffer_clear -instead of manual memory management. -(cmd_confirm): Use pinentry_setbuffer_clear instead of manual memory -management. ---- - pinentry/pinentry.c | 52 +++++++++++++++++++++++++++++++++++++++------------- - 1 file changed, 39 insertions(+), 13 deletions(-) - -diff --git a/pinentry/pinentry.c b/pinentry/pinentry.c -index 3a44851..53216fc 100644 ---- a/pinentry/pinentry.c -+++ b/pinentry/pinentry.c -@@ -27,6 +27,7 @@ - #include <stdlib.h> - #include <string.h> - #include <unistd.h> -+#include <assert.h> - #ifndef HAVE_W32CE_SYSTEM - # include <locale.h> - #endif -@@ -67,7 +68,7 @@ struct pinentry pinentry = - NULL, /* Not-Ok button. */ - NULL, /* Cancel button. */ - NULL, /* PIN. */ -- 2048, /* PIN length. */ -+ 0, /* PIN length. */ - 0, /* pin_from_cache. */ - 0, /* Display. */ - 0, /* TTY name. */ -@@ -354,8 +355,18 @@ char * - pinentry_setbufferlen (pinentry_t pin, int len) - { - char *newp; -- if (len < pinentry.pin_len) -+ -+ if (pin->pin_len) -+ assert (pin->pin); -+ else -+ assert (!pin->pin); -+ -+ if (len < 2048) -+ len = 2048; -+ -+ if (len <= pin->pin_len) - return NULL; -+ - newp = secmem_realloc (pin->pin, len); - if (newp) - { -@@ -371,6 +382,28 @@ pinentry_setbufferlen (pinentry_t pin, int len) - return newp; - } - -+static void -+pinentry_setbuffer_clear (pinentry_t pin) -+{ -+ if (! pin->pin) -+ { -+ assert (pin->pin_len == 0); -+ return; -+ } -+ -+ assert (pin->pin_len > 0); -+ -+ secmem_free (pin->pin); -+ pin->pin = NULL; -+ pin->pin_len = 0; -+} -+ -+static void -+pinentry_setbuffer_init (pinentry_t pin) -+{ -+ pinentry_setbuffer_clear (pin); -+ pinentry_setbufferlen (pin, 0); -+} - - /* Initialize the secure memory subsystem, drop privileges and return. - Must be called early. */ -@@ -983,7 +1016,7 @@ cmd_getpin (ASSUAN_CONTEXT ctx, char *line) - int set_prompt = 0; - int just_read_password_from_cache = 0; - -- pinentry.pin = secmem_malloc (pinentry.pin_len); -+ pinentry_setbuffer_init (&pinentry); - if (!pinentry.pin) - return ASSUAN_Out_Of_Core; - -@@ -1065,11 +1098,7 @@ cmd_getpin (ASSUAN_CONTEXT ctx, char *line) - - if (result < 0) - { -- if (pinentry.pin) -- { -- secmem_free (pinentry.pin); -- pinentry.pin = NULL; -- } -+ pinentry_setbuffer_clear (&pinentry); - if (pinentry.specific_err) - return pinentry.specific_err; - return pinentry.locale_err? ASSUAN_Locale_Problem: ASSUAN_Canceled; -@@ -1094,11 +1123,7 @@ cmd_getpin (ASSUAN_CONTEXT ctx, char *line) - password_cache_save (pinentry.keyinfo, pinentry.pin); - } - -- if (pinentry.pin) -- { -- secmem_free (pinentry.pin); -- pinentry.pin = NULL; -- } -+ pinentry_setbuffer_clear (&pinentry); - - return result; - } -@@ -1122,6 +1147,7 @@ cmd_confirm (ASSUAN_CONTEXT ctx, char *line) - pinentry.locale_err = 0; - pinentry.specific_err = 0; - pinentry.canceled = 0; -+ pinentry_setbuffer_clear (&pinentry); - result = (*pinentry_cmd_handler) (&pinentry); - if (pinentry.error) - { --- -2.1.4 - |