Commit b96dba9e authored by Richard Levitte's avatar Richard Levitte
Browse files

Fix small UI issues



- in EVP_read_pw_string_min(), the return value from UI_add_* wasn't
  properly checked
- in UI_process(), |state| was never made NULL, which means an error
  when closing the session wouldn't be accurately reported.

Reviewed-by: default avatarPaul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/3849)
parent 67f060ac
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify)
int EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt,
                           int verify)
{
    int ret;
    int ret = -1;
    char buff[BUFSIZ];
    UI *ui;

@@ -56,16 +56,18 @@ int EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt,
        prompt = prompt_string;
    ui = UI_new();
    if (ui == NULL)
        return -1;
    UI_add_input_string(ui, prompt, 0, buf, min,
                        (len >= BUFSIZ) ? BUFSIZ - 1 : len);
    if (verify)
        UI_add_verify_string(ui, prompt, 0,
                             buff, min, (len >= BUFSIZ) ? BUFSIZ - 1 : len,
                             buf);
        return ret;
    if (UI_add_input_string(ui, prompt, 0, buf, min,
                            (len >= BUFSIZ) ? BUFSIZ - 1 : len) < 0
        || (verify
            && UI_add_verify_string(ui, prompt, 0, buff, min,
                                    (len >= BUFSIZ) ? BUFSIZ - 1 : len,
                                    buf) < 0))
        goto end;
    ret = UI_process(ui);
    UI_free(ui);
    OPENSSL_cleanse(buff, BUFSIZ);
 end:
    UI_free(ui);
    return ret;
}

+2 −0
Original line number Diff line number Diff line
@@ -515,6 +515,8 @@ int UI_process(UI *ui)
            }
        }
    }

    state = NULL;
 err:
    if (ui->meth->ui_close_session != NULL
        && ui->meth->ui_close_session(ui) <= 0) {