summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch136
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
-