Make -passin -passout etc work again.
Fix leak in ca.c when using -passin.
This commit is contained in:
parent
35bf35411c
commit
b65f851318
2 changed files with 19 additions and 3 deletions
|
@ -459,6 +459,15 @@ int password_callback(char *buf, int bufsiz, int verify,
|
|||
prompt_info = cb_data->prompt_info;
|
||||
}
|
||||
|
||||
if (password)
|
||||
{
|
||||
res = strlen(password);
|
||||
if (res > bufsiz)
|
||||
res = bufsiz;
|
||||
memcpy(buf, password, res);
|
||||
return res;
|
||||
}
|
||||
|
||||
ui = UI_new_method(ui_method);
|
||||
if (ui)
|
||||
{
|
||||
|
|
13
apps/ca.c
13
apps/ca.c
|
@ -264,6 +264,7 @@ int MAIN(int argc, char **argv)
|
|||
{
|
||||
ENGINE *e = NULL;
|
||||
char *key=NULL,*passargin=NULL;
|
||||
int free_key = 0;
|
||||
int total=0;
|
||||
int total_done=0;
|
||||
int badops=0;
|
||||
|
@ -677,10 +678,14 @@ bad:
|
|||
lookup_fail(section,ENV_PRIVATE_KEY);
|
||||
goto err;
|
||||
}
|
||||
if (!key && !app_passwd(bio_err, passargin, NULL, &key, NULL))
|
||||
if (!key)
|
||||
{
|
||||
BIO_printf(bio_err,"Error getting password\n");
|
||||
goto err;
|
||||
free_key = 1;
|
||||
if (!app_passwd(bio_err, passargin, NULL, &key, NULL))
|
||||
{
|
||||
BIO_printf(bio_err,"Error getting password\n");
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
pkey = load_key(bio_err, keyfile, keyform, key, e,
|
||||
"CA private key");
|
||||
|
@ -1577,6 +1582,8 @@ err:
|
|||
|
||||
if (ret) ERR_print_errors(bio_err);
|
||||
app_RAND_write_file(randfile, bio_err);
|
||||
if (free_key)
|
||||
OPENSSL_free(key);
|
||||
BN_free(serial);
|
||||
TXT_DB_free(db);
|
||||
EVP_PKEY_free(pkey);
|
||||
|
|
Loading…
Reference in a new issue