mirror of https://github.com/openssl/openssl.git
				
				
				
			RT2759: Don't read TTY when already at EOF.
Reviewed-by: Andy Polyakov <appro@openssl.org>
This commit is contained in:
		
							parent
							
								
									7315ce80de
								
							
						
					
					
						commit
						a3ef2c1679
					
				|  | @ -818,6 +818,7 @@ int s_client_main(int argc, char **argv) | |||
|     int socket_family = AF_UNSPEC, socket_type = SOCK_STREAM; | ||||
|     int starttls_proto = PROTO_OFF, crl_format = FORMAT_PEM, crl_download = 0; | ||||
|     int write_tty, read_tty, write_ssl, read_ssl, tty_on, ssl_pending; | ||||
|     int at_eof = 0; | ||||
|     int read_buf_len = 0; | ||||
|     int fallback_scsv = 0; | ||||
|     long randamt = 0; | ||||
|  | @ -2123,7 +2124,12 @@ int s_client_main(int argc, char **argv) | |||
|         if (!ssl_pending) { | ||||
| #if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) | ||||
|             if (tty_on) { | ||||
|                 if (read_tty) | ||||
|                 /*
 | ||||
|                  * Note that select() returns when read _would not block_, | ||||
|                  * and EOF satisfies that.  To avoid a CPU-hogging loop, | ||||
|                  * set the flag so we exit. | ||||
|                  */ | ||||
|                 if (read_tty && !at_eof) | ||||
|                     openssl_fdset(fileno(stdin), &readfds); | ||||
|                 if (write_tty) | ||||
|                     openssl_fdset(fileno(stdout), &writefds); | ||||
|  | @ -2369,6 +2375,9 @@ int s_client_main(int argc, char **argv) | |||
|             } else | ||||
|                 i = raw_read_stdin(cbuf, BUFSIZZ); | ||||
| 
 | ||||
|             if (i == 0) | ||||
|                 at_eof = 1; | ||||
| 
 | ||||
|             if ((!c_ign_eof) && ((i <= 0) || (cbuf[0] == 'Q' && cmdletters))) { | ||||
|                 BIO_printf(bio_err, "DONE\n"); | ||||
|                 ret = 0; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue