Commit b65f8513 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Make -passin -passout etc work again.

Fix leak in ca.c when using -passin.
parent 35bf3541
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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)
		{
+10 −3
Original line number Diff line number Diff line
@@ -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,11 +678,15 @@ bad:
		lookup_fail(section,ENV_PRIVATE_KEY);
		goto err;
		}
	if (!key && !app_passwd(bio_err, passargin, NULL, &key, NULL))
	if (!key)
		{
		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");
	if (key) memset(key,0,strlen(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);