mirror of https://github.com/openssl/openssl.git
				
				
				
			crypto: evp: fix unchecked return of ossl_provider_up_ref in keymgmt_from_algorithm
The ossl_provider_up_ref() call in keymgmt_from_algorithm() was not checking its return value, unlike other similar calls in the codebase. This could lead to inconsistent reference counting if the up-ref failed. Now the return value is checked, and if the up-ref fails, the keymgmt is freed and an error is raised, ensuring consistent cleanup. Signed-off-by: Anton Moryakov <ant.v.moryakov@gmail.com>
This commit is contained in:
		
							parent
							
								
									c66d9760a7
								
							
						
					
					
						commit
						746702ee7d
					
				|  | @ -261,8 +261,11 @@ static void *keymgmt_from_algorithm(int name_id, | ||||||
|         return NULL; |         return NULL; | ||||||
|     } |     } | ||||||
|     keymgmt->prov = prov; |     keymgmt->prov = prov; | ||||||
|     if (prov != NULL) |     if (prov != NULL && !ossl_provider_up_ref(prov)) { | ||||||
|         ossl_provider_up_ref(prov); |         EVP_KEYMGMT_free(keymgmt); | ||||||
|  |         ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR); | ||||||
|  |         return NULL; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
| #ifndef FIPS_MODULE | #ifndef FIPS_MODULE | ||||||
|     keymgmt->legacy_alg = get_legacy_alg_type_from_keymgmt(keymgmt); |     keymgmt->legacy_alg = get_legacy_alg_type_from_keymgmt(keymgmt); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue