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

PR: 2703

Submitted by: Alexey Melnikov <alexey.melnikov@isode.com>

Fix some memory and resource leaks in CAPI ENGINE.
parent da2a5a79
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -1193,6 +1193,7 @@ static int capi_list_containers(CAPI_CTX *ctx, BIO *out)
		{
		CAPIerr(CAPI_F_CAPI_LIST_CONTAINERS, CAPI_R_ENUMCONTAINERS_ERROR);
		capi_addlasterror();
		CryptReleaseContext(hprov, 0);
		return 0;
		}
	CAPI_trace(ctx, "Got max container len %d\n", buflen);
@@ -1659,6 +1660,8 @@ static int capi_ctx_set_provname(CAPI_CTX *ctx, LPSTR pname, DWORD type, int che
			}
		CryptReleaseContext(hprov, 0);
		}
	if (ctx->cspname)
		OPENSSL_free(ctx->cspname);
	ctx->cspname = BUF_strdup(pname);
	ctx->csptype = type;
	return 1;
@@ -1668,9 +1671,12 @@ static int capi_ctx_set_provname_idx(CAPI_CTX *ctx, int idx)
	{
	LPSTR pname;
	DWORD type;
	int res;
	if (capi_get_provname(ctx, &pname, &type, idx) != 1)
		return 0;
	return capi_ctx_set_provname(ctx, pname, type, 0);
	res = capi_ctx_set_provname(ctx, pname, type, 0);
	OPENSSL_free(pname);
	return res;
	}

static int cert_issuer_match(STACK_OF(X509_NAME) *ca_dn, X509 *x)