From d00b7aad5add9864147635279b951fbe8a7656b7 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Fri, 5 Mar 1999 01:07:04 +0000 Subject: [PATCH] Workaround for a Win95 console bug triggered by the password read stuff. --- CHANGES | 7 ++++++- crypto/des/read_pwd.c | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index f6800dcf1d..5346d4001e 100644 --- a/CHANGES +++ b/CHANGES @@ -5,7 +5,12 @@ Changes between 0.9.1c and 0.9.2 - *) Add text documentation for the BUFFER functions. + *) Add text documentation for the BUFFER functions. Also added a work around + to a Win95 console bug. This was triggered by the password read stuff: the + last character typed gets carried over to the next fread(). If you were + generating a new cert request using 'req' for example then the last + character of the passphrase would be CR which would then enter the first + field as blank. [Steve Henson] *) Added the new `Includes OpenSSL Cryptography Software' button as diff --git a/crypto/des/read_pwd.c b/crypto/des/read_pwd.c index 3041ab2dfe..edfa456a43 100644 --- a/crypto/des/read_pwd.c +++ b/crypto/des/read_pwd.c @@ -63,6 +63,11 @@ #include #endif +#if defined(WIN32) && !defined(WINNT) +#define WIN_CONSOLE_BUG +#endif + + /* 06-Apr-92 Luke Brennan Support for VMS */ #include "des_locl.h" #include @@ -70,6 +75,12 @@ #include #include +#ifdef WIN_CONSOLE_BUG +#include +#include +#endif + + /* There are 5 types of terminal interface supported, * TERMIO, TERMIOS, VMS, MSDOS and SGTTY */ @@ -462,6 +473,18 @@ FILE *tty; break; } } +#ifdef WIN_CONSOLE_BUG +/* Win95 has several evil console bugs: one of these is that the + * last character read using getch() is passed to the next read: this is + * usually a CR so this can be trouble. No STDIO fix seems to work but + * flushing the console appears to do the trick. + */ + { + HANDLE inh; + inh = GetStdHandle(STD_INPUT_HANDLE); + FlushConsoleInputBuffer(inh); + } +#endif return(strlen(buf)); } #endif -- 2.25.1