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