From: Dr. Stephen Henson Date: Sat, 23 Jun 2001 12:50:06 +0000 (+0000) Subject: Fix hwcrhk_insert_card. X-Git-Tag: OpenSSL_0_9_6c~182^2~88 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=429266b7e4b494b72e16045d47ffc5c3e378a9bf;p=oweals%2Fopenssl.git Fix hwcrhk_insert_card. --- diff --git a/crypto/engine/hw_ncipher.c b/crypto/engine/hw_ncipher.c index 1b9254c321..b2af378960 100644 --- a/crypto/engine/hw_ncipher.c +++ b/crypto/engine/hw_ncipher.c @@ -1175,7 +1175,7 @@ static int hwcrhk_insert_card(const char *prompt_info, HWCryptoHook_PassphraseContext *ppctx, HWCryptoHook_CallerContext *cactx) { - int ok = 1; + int ok = -1; UI *ui; void *callback_data = NULL; UI_METHOD *ui_method = NULL; @@ -1211,7 +1211,7 @@ static int hwcrhk_insert_card(const char *prompt_info, BIO_snprintf(buf, sizeof(buf)-1, "Current card: \"%s\"\n", wrong_info); ok = UI_dup_info_string(ui, buf); - if (ok == 0 && prompt_info) + if (ok && prompt_info) { BIO_snprintf(buf, sizeof(buf)-1, "Insert card \"%s\"\n then hit or C to cancel\n", prompt_info); @@ -1219,15 +1219,20 @@ static int hwcrhk_insert_card(const char *prompt_info, answer, 0, sizeof(answer)-1); } UI_add_user_data(ui, callback_data); - if (ok == 0) + if (ok) ok = UI_process(ui); UI_free(ui); - if (strchr("Cc",answer[0]) == 0) + /* If canceled input treat as 'cancel' */ + if (ok == -2) + ok = 1; + else if(ok != 0) + ok = -1; + else if (answer[0] == 'c' || answer[0] == 'C') ok = 1; + else + ok = 0; } - if (ok == 0) - return 0; - return -1; + return ok; } static void hwcrhk_log_message(void *logstr, const char *message)