X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fui%2Fui_lib.c;h=7b08107f7a46ff2c69f6070a2ae3231b879adb47;hp=9ba844eacb0e23c908a3d7071a58be8308a92dde;hb=1da12e34ed69cec206f3a251a1e62ceeb694a6ea;hpb=b39fc560612984e65ec30d7f37487303bf514fb3 diff --git a/crypto/ui/ui_lib.c b/crypto/ui/ui_lib.c index 9ba844eacb..7b08107f7a 100644 --- a/crypto/ui/ui_lib.c +++ b/crypto/ui/ui_lib.c @@ -1,4 +1,3 @@ -/* crypto/ui/ui_lib.c -*- mode:C; c-file-style: "eay" -*- */ /* * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project * 2001. @@ -74,20 +73,25 @@ UI *UI_new(void) UI *UI_new_method(const UI_METHOD *method) { - UI *ret = OPENSSL_malloc(sizeof(*ret)); + UI *ret = OPENSSL_zalloc(sizeof(*ret)); if (ret == NULL) { UIerr(UI_F_UI_NEW_METHOD, ERR_R_MALLOC_FAILURE); return NULL; } + + ret->lock = CRYPTO_THREAD_lock_new(); + if (ret->lock == NULL) { + UIerr(UI_F_UI_NEW_METHOD, ERR_R_MALLOC_FAILURE); + OPENSSL_free(ret); + return NULL; + } + if (method == NULL) ret->meth = UI_get_default_method(); else ret->meth = method; - ret->strings = NULL; - ret->user_data = NULL; - ret->flags = 0; CRYPTO_new_ex_data(CRYPTO_EX_INDEX_UI, ret, &ret->ex_data); return ret; } @@ -115,6 +119,7 @@ void UI_free(UI *ui) return; sk_UI_STRING_pop_free(ui->strings, free_string); CRYPTO_free_ex_data(CRYPTO_EX_INDEX_UI, ui, &ui->ex_data); + CRYPTO_THREAD_lock_free(ui->lock); OPENSSL_free(ui); } @@ -141,7 +146,7 @@ static UI_STRING *general_allocate_prompt(UI *ui, const char *prompt, } else if ((type == UIT_PROMPT || type == UIT_VERIFY || type == UIT_BOOLEAN) && result_buf == NULL) { UIerr(UI_F_GENERAL_ALLOCATE_PROMPT, UI_R_NO_RESULT_BUFFER); - } else if ((ret = OPENSSL_malloc(sizeof(*ret)))) { + } else if ((ret = OPENSSL_malloc(sizeof(*ret))) != NULL) { ret->out_string = prompt; ret->flags = prompt_freeable ? OUT_STRING_FREEABLE : 0; ret->input_flags = input_flags; @@ -167,7 +172,7 @@ static int general_allocate_string(UI *ui, const char *prompt, s->_.string_data.result_maxsize = maxsize; s->_.string_data.test_buf = test_buf; ret = sk_UI_STRING_push(ui->strings, s); - /* sk_push() returns 0 on error. Let's addapt that */ + /* sk_push() returns 0 on error. Let's adapt that */ if (ret <= 0) ret--; } else @@ -211,7 +216,7 @@ static int general_allocate_boolean(UI *ui, s->_.boolean_data.cancel_chars = cancel_chars; ret = sk_UI_STRING_push(ui->strings, s); /* - * sk_push() returns 0 on error. Let's addapt that + * sk_push() returns 0 on error. Let's adapt that */ if (ret <= 0) ret--; @@ -241,7 +246,7 @@ int UI_dup_input_string(UI *ui, const char *prompt, int flags, char *prompt_copy = NULL; if (prompt) { - prompt_copy = BUF_strdup(prompt); + prompt_copy = OPENSSL_strdup(prompt); if (prompt_copy == NULL) { UIerr(UI_F_UI_DUP_INPUT_STRING, ERR_R_MALLOC_FAILURE); return 0; @@ -269,7 +274,7 @@ int UI_dup_verify_string(UI *ui, const char *prompt, int flags, char *prompt_copy = NULL; if (prompt) { - prompt_copy = BUF_strdup(prompt); + prompt_copy = OPENSSL_strdup(prompt); if (prompt_copy == NULL) { UIerr(UI_F_UI_DUP_VERIFY_STRING, ERR_R_MALLOC_FAILURE); return -1; @@ -300,7 +305,7 @@ int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, char *cancel_chars_copy = NULL; if (prompt) { - prompt_copy = BUF_strdup(prompt); + prompt_copy = OPENSSL_strdup(prompt); if (prompt_copy == NULL) { UIerr(UI_F_UI_DUP_INPUT_BOOLEAN, ERR_R_MALLOC_FAILURE); goto err; @@ -308,7 +313,7 @@ int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, } if (action_desc) { - action_desc_copy = BUF_strdup(action_desc); + action_desc_copy = OPENSSL_strdup(action_desc); if (action_desc_copy == NULL) { UIerr(UI_F_UI_DUP_INPUT_BOOLEAN, ERR_R_MALLOC_FAILURE); goto err; @@ -316,7 +321,7 @@ int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, } if (ok_chars) { - ok_chars_copy = BUF_strdup(ok_chars); + ok_chars_copy = OPENSSL_strdup(ok_chars); if (ok_chars_copy == NULL) { UIerr(UI_F_UI_DUP_INPUT_BOOLEAN, ERR_R_MALLOC_FAILURE); goto err; @@ -324,7 +329,7 @@ int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, } if (cancel_chars) { - cancel_chars_copy = BUF_strdup(cancel_chars); + cancel_chars_copy = OPENSSL_strdup(cancel_chars); if (cancel_chars_copy == NULL) { UIerr(UI_F_UI_DUP_INPUT_BOOLEAN, ERR_R_MALLOC_FAILURE); goto err; @@ -353,7 +358,7 @@ int UI_dup_info_string(UI *ui, const char *text) char *text_copy = NULL; if (text) { - text_copy = BUF_strdup(text); + text_copy = OPENSSL_strdup(text); if (text_copy == NULL) { UIerr(UI_F_UI_DUP_INFO_STRING, ERR_R_MALLOC_FAILURE); return -1; @@ -375,7 +380,7 @@ int UI_dup_error_string(UI *ui, const char *text) char *text_copy = NULL; if (text) { - text_copy = BUF_strdup(text); + text_copy = OPENSSL_strdup(text); if (text_copy == NULL) { UIerr(UI_F_UI_DUP_ERROR_STRING, ERR_R_MALLOC_FAILURE); return -1; @@ -408,13 +413,13 @@ char *UI_construct_prompt(UI *ui, const char *object_desc, prompt = OPENSSL_malloc(len + 1); if (prompt == NULL) return NULL; - BUF_strlcpy(prompt, prompt1, len + 1); - BUF_strlcat(prompt, object_desc, len + 1); + OPENSSL_strlcpy(prompt, prompt1, len + 1); + OPENSSL_strlcat(prompt, object_desc, len + 1); if (object_name) { - BUF_strlcat(prompt, prompt2, len + 1); - BUF_strlcat(prompt, object_name, len + 1); + OPENSSL_strlcat(prompt, prompt2, len + 1); + OPENSSL_strlcat(prompt, object_name, len + 1); } - BUF_strlcat(prompt, prompt3, len + 1); + OPENSSL_strlcat(prompt, prompt3, len + 1); } return prompt; } @@ -539,13 +544,6 @@ int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void)) return -1; } -int UI_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func) -{ - return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, argl, argp, - new_func, dup_func, free_func); -} - int UI_set_ex_data(UI *r, int idx, void *arg) { return (CRYPTO_set_ex_data(&r->ex_data, idx, arg)); @@ -582,12 +580,10 @@ const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth) UI_METHOD *UI_create_method(char *name) { - UI_METHOD *ui_method = OPENSSL_malloc(sizeof(*ui_method)); + UI_METHOD *ui_method = OPENSSL_zalloc(sizeof(*ui_method)); - if (ui_method) { - memset(ui_method, 0, sizeof(*ui_method)); - ui_method->name = BUF_strdup(name); - } + if (ui_method != NULL) + ui_method->name = OPENSSL_strdup(name); return ui_method; } @@ -834,7 +830,7 @@ int UI_set_result(UI *ui, UI_STRING *uis, const char *result) return -1; } - BUF_strlcpy(uis->result_buf, result, + OPENSSL_strlcpy(uis->result_buf, result, uis->_.string_data.result_maxsize + 1); break; case UIT_BOOLEAN: