diff options
Diffstat (limited to 'src/lib/libcrypto/ui/ui_openssl.c')
-rw-r--r-- | src/lib/libcrypto/ui/ui_openssl.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/libcrypto/ui/ui_openssl.c b/src/lib/libcrypto/ui/ui_openssl.c index 5fbedf6ff8..1e3dba0833 100644 --- a/src/lib/libcrypto/ui/ui_openssl.c +++ b/src/lib/libcrypto/ui/ui_openssl.c | |||
@@ -122,7 +122,9 @@ | |||
122 | * sigaction and fileno included. -pedantic would be more appropriate for | 122 | * sigaction and fileno included. -pedantic would be more appropriate for |
123 | * the intended purposes, but we can't prevent users from adding -ansi. | 123 | * the intended purposes, but we can't prevent users from adding -ansi. |
124 | */ | 124 | */ |
125 | #define _POSIX_C_SOURCE 1 | 125 | #ifndef _POSIX_C_SOURCE |
126 | #define _POSIX_C_SOURCE 2 | ||
127 | #endif | ||
126 | #include <signal.h> | 128 | #include <signal.h> |
127 | #include <stdio.h> | 129 | #include <stdio.h> |
128 | #include <string.h> | 130 | #include <string.h> |
@@ -297,7 +299,7 @@ static int is_a_tty; | |||
297 | 299 | ||
298 | /* Declare static functions */ | 300 | /* Declare static functions */ |
299 | #if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) | 301 | #if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) |
300 | static void read_till_nl(FILE *); | 302 | static int read_till_nl(FILE *); |
301 | static void recsig(int); | 303 | static void recsig(int); |
302 | static void pushsig(void); | 304 | static void pushsig(void); |
303 | static void popsig(void); | 305 | static void popsig(void); |
@@ -390,7 +392,7 @@ static int read_string(UI *ui, UI_STRING *uis) | |||
390 | 392 | ||
391 | #if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) | 393 | #if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) |
392 | /* Internal functions to read a string without echoing */ | 394 | /* Internal functions to read a string without echoing */ |
393 | static void read_till_nl(FILE *in) | 395 | static int read_till_nl(FILE *in) |
394 | { | 396 | { |
395 | #define SIZE 4 | 397 | #define SIZE 4 |
396 | char buf[SIZE+1]; | 398 | char buf[SIZE+1]; |
@@ -399,6 +401,7 @@ static void read_till_nl(FILE *in) | |||
399 | if (fgets(buf,sizeof(buf),in) == NULL) | 401 | if (fgets(buf,sizeof(buf),in) == NULL) |
400 | break; | 402 | break; |
401 | } while (strchr(buf,'\n') == NULL); | 403 | } while (strchr(buf,'\n') == NULL); |
404 | return 1; | ||
402 | } | 405 | } |
403 | 406 | ||
404 | static volatile sig_atomic_t intr_signal; | 407 | static volatile sig_atomic_t intr_signal; |
@@ -446,7 +449,8 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) | |||
446 | *p='\0'; | 449 | *p='\0'; |
447 | } | 450 | } |
448 | else | 451 | else |
449 | read_till_nl(tty_in); | 452 | if (!read_till_nl(tty_in)) |
453 | goto error; | ||
450 | if (UI_set_result(ui, uis, result) >= 0) | 454 | if (UI_set_result(ui, uis, result) >= 0) |
451 | ok=1; | 455 | ok=1; |
452 | 456 | ||
@@ -474,7 +478,7 @@ static int open_console(UI *ui) | |||
474 | CRYPTO_w_lock(CRYPTO_LOCK_UI); | 478 | CRYPTO_w_lock(CRYPTO_LOCK_UI); |
475 | is_a_tty = 1; | 479 | is_a_tty = 1; |
476 | 480 | ||
477 | #if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) | 481 | #if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS) |
478 | tty_in=stdin; | 482 | tty_in=stdin; |
479 | tty_out=stderr; | 483 | tty_out=stderr; |
480 | #else | 484 | #else |