diff --git a/CHANGES b/CHANGES index f6800dcf1d1f1ad646bdc5b6b70fb227f2931668..5346d4001e941024013b28a6c3d517d46c5865a2 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 3041ab2dfe8ebaa1ea80888969fc5b590cc374d5..edfa456a43905ae5a20f8a4546041fec8edb1d90 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