| 
					
				 | 
			
			
				@@ -442,7 +442,7 @@ static EVP_PKEY *extract_pkey_from_x509(const char *x509_str) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   BIO_free(bio); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (x509 != NULL) X509_free(x509); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  X509_free(x509); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -496,6 +496,8 @@ static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const grpc_json *key_prop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   RSA *rsa = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   EVP_PKEY *result = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  BIGNUM *tmp_n = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  BIGNUM *tmp_e = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   GPR_ASSERT(kty != NULL && json != NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (strcmp(kty, "RSA") != 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -507,8 +509,6 @@ static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     gpr_log(GPR_ERROR, "Could not create rsa key."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     goto end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  BIGNUM *tmp_n = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  BIGNUM *tmp_e = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (key_prop = json->child; key_prop != NULL; key_prop = key_prop->next) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (strcmp(key_prop->key, "n") == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       tmp_n = 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -528,11 +528,16 @@ static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     gpr_log(GPR_ERROR, "Cannot set RSA key from inputs."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     goto end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /* RSA_set0_key takes ownership on success. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  tmp_n = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  tmp_e = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   result = EVP_PKEY_new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   EVP_PKEY_set1_RSA(result, rsa); /* uprefs rsa. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (rsa != NULL) RSA_free(rsa); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  RSA_free(rsa); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  BN_free(tmp_n); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  BN_free(tmp_e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -618,7 +623,7 @@ static int verify_jwt_signature(EVP_PKEY *key, const char *alg, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   result = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (md_ctx != NULL) EVP_MD_CTX_destroy(md_ctx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  EVP_MD_CTX_destroy(md_ctx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -658,7 +663,7 @@ static void on_keys_retrieved(grpc_exec_ctx *exec_ctx, void *user_data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (json != NULL) grpc_json_destroy(json); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (verification_key != NULL) EVP_PKEY_free(verification_key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  EVP_PKEY_free(verification_key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ctx->user_cb(exec_ctx, ctx->user_data, status, claims); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   verifier_cb_ctx_destroy(exec_ctx, ctx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |