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 |
