unbuffer stdin before get passwd from stdin
authorwangyuhang <524413304@qq.com>
Wed, 7 Dec 2022 08:48:16 +0000 (16:48 +0800)
committerPauli <pauli@openssl.org>
Sun, 11 Dec 2022 20:24:35 +0000 (07:24 +1100)
commond LD_LIBRARY_PATH= openssl rsa -aes256 -passout stdin <<< "xxxxxx” will get pass(fun app_get_pass()) from stdin first, and then load key(fun load_key()). but it unbuffer stdin before load key, this will cause the load key to fail.

now unbuffer stdin before get pass, this will solve https://github.com/openssl/openssl/issues/19835

CLA: trivial

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19851)

(cherry picked from commit efec0f4611ee854f2b0b3da0c135e839bf8e7d04)

apps/lib/apps.c

index 9d4c6c3c01de509bbb1ffbadccd852c1c830eb59..9a53a109324b2820d8664a4515ef9b829983f4c5 100644 (file)
@@ -298,6 +298,7 @@ static char *app_get_pass(const char *arg, int keepbio)
             pwdbio = BIO_push(btmp, pwdbio);
 #endif
         } else if (strcmp(arg, "stdin") == 0) {
+            unbuffer(stdin);
             pwdbio = dup_bio_in(FORMAT_TEXT);
             if (pwdbio == NULL) {
                 BIO_printf(bio_err, "Can't open BIO for stdin\n");