summaryrefslogtreecommitdiffstats
path: root/lib/libssl/src
diff options
context:
space:
mode:
authorguenther <guenther@openbsd.org>2015-07-16 02:46:49 +0000
committerguenther <guenther@openbsd.org>2015-07-16 02:46:49 +0000
commit142d36aa13769187bf118bc094f1a5238f045c13 (patch)
tree5ee96e659e37700c0c497998159e018c252761a9 /lib/libssl/src
parentmake a comment more safe, there's no CRIME there. (diff)
downloadwireguard-openbsd-142d36aa13769187bf118bc094f1a5238f045c13.tar.xz
wireguard-openbsd-142d36aa13769187bf118bc094f1a5238f045c13.zip
After reading a password with terminal echo off, restore the terminal to
its original state instead of blindly turning echo on. problem reported on the openssl-dev list by William Freeman ok miod@ beck@
Diffstat (limited to 'lib/libssl/src')
-rw-r--r--lib/libssl/src/crypto/ui/ui_openssl.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/libssl/src/crypto/ui/ui_openssl.c b/lib/libssl/src/crypto/ui/ui_openssl.c
index a46534e3e56..b3d2971a026 100644
--- a/lib/libssl/src/crypto/ui/ui_openssl.c
+++ b/lib/libssl/src/crypto/ui/ui_openssl.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ui_openssl.c,v 1.23 2014/07/13 00:10:47 deraadt Exp $ */
+/* $OpenBSD: ui_openssl.c,v 1.24 2015/07/16 02:46:49 guenther Exp $ */
/* Written by Richard Levitte (richard@levitte.org) and others
* for the OpenSSL project 2001.
*/
@@ -134,7 +134,7 @@
/* Define globals. They are protected by a lock */
static struct sigaction savsig[NX509_SIG];
-static struct termios tty_orig, tty_new;
+static struct termios tty_orig;
static FILE *tty_in, *tty_out;
static int is_a_tty;
@@ -325,7 +325,8 @@ open_console(UI *ui)
static int
noecho_console(UI *ui)
{
- memcpy(&(tty_new), &(tty_orig), sizeof(tty_orig));
+ struct termios tty_new = tty_orig;
+
tty_new.c_lflag &= ~ECHO;
if (is_a_tty && (tcsetattr(fileno(tty_in), TCSANOW, &tty_new) == -1))
return 0;
@@ -335,9 +336,7 @@ noecho_console(UI *ui)
static int
echo_console(UI *ui)
{
- memcpy(&(tty_new), &(tty_orig), sizeof(tty_orig));
- tty_new.c_lflag |= ECHO;
- if (is_a_tty && (tcsetattr(fileno(tty_in), TCSANOW, &tty_new) == -1))
+ if (is_a_tty && (tcsetattr(fileno(tty_in), TCSANOW, &tty_orig) == -1))
return 0;
return 1;
}