From: wangyuhang <524413304@qq.com> Date: Wed, 7 Dec 2022 08:48:16 +0000 (+0800) Subject: unbuffer stdin before get passwd from stdin X-Git-Tag: openssl-3.2.0-alpha1~1605 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=efec0f4611ee854f2b0b3da0c135e839bf8e7d04;p=thirdparty%2Fopenssl.git unbuffer stdin before get passwd from stdin 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 Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/19851) --- diff --git a/apps/lib/apps.c b/apps/lib/apps.c index bbe0d009efb..4bd2ab964d6 100644 --- a/apps/lib/apps.c +++ b/apps/lib/apps.c @@ -301,6 +301,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");