PR: 2703
Submitted by: Alexey Melnikov <alexey.melnikov@isode.com> Fix some memory and resource leaks in CAPI ENGINE.
This commit is contained in:
		@@ -1141,6 +1141,7 @@ static int capi_list_containers(CAPI_CTX *ctx, BIO *out)
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		CAPIerr(CAPI_F_CAPI_LIST_CONTAINERS, CAPI_R_ENUMCONTAINERS_ERROR);
 | 
							CAPIerr(CAPI_F_CAPI_LIST_CONTAINERS, CAPI_R_ENUMCONTAINERS_ERROR);
 | 
				
			||||||
		capi_addlasterror();
 | 
							capi_addlasterror();
 | 
				
			||||||
 | 
							CryptReleaseContext(hprov, 0);
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	CAPI_trace(ctx, "Got max container len %d\n", buflen);
 | 
						CAPI_trace(ctx, "Got max container len %d\n", buflen);
 | 
				
			||||||
@@ -1558,6 +1559,8 @@ static int capi_ctx_set_provname(CAPI_CTX *ctx, LPSTR pname, DWORD type, int che
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		CryptReleaseContext(hprov, 0);
 | 
							CryptReleaseContext(hprov, 0);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						if (ctx->cspname)
 | 
				
			||||||
 | 
							OPENSSL_free(ctx->cspname);
 | 
				
			||||||
	ctx->cspname = BUF_strdup(pname);
 | 
						ctx->cspname = BUF_strdup(pname);
 | 
				
			||||||
	ctx->csptype = type;
 | 
						ctx->csptype = type;
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
@@ -1567,9 +1570,12 @@ static int capi_ctx_set_provname_idx(CAPI_CTX *ctx, int idx)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	LPSTR pname;
 | 
						LPSTR pname;
 | 
				
			||||||
	DWORD type;
 | 
						DWORD type;
 | 
				
			||||||
 | 
						int res;
 | 
				
			||||||
	if (capi_get_provname(ctx, &pname, &type, idx) != 1)
 | 
						if (capi_get_provname(ctx, &pname, &type, idx) != 1)
 | 
				
			||||||
		return 0;
 | 
							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)
 | 
					static int cert_issuer_match(STACK_OF(X509_NAME) *ca_dn, X509 *x)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user