diff options
author | 2015-07-16 02:46:49 +0000 | |
---|---|---|
committer | 2015-07-16 02:46:49 +0000 | |
commit | 142d36aa13769187bf118bc094f1a5238f045c13 (patch) | |
tree | 5ee96e659e37700c0c497998159e018c252761a9 /lib/libssl/src | |
parent | make a comment more safe, there's no CRIME there. (diff) | |
download | wireguard-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.c | 11 |
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; } |