mirror of https://github.com/openssl/openssl.git
				
				
				
			Don't load GOST ENGINE if it is already loaded.
Multiple copies of the ENGINE will cause problems when it is cleaned up as the methods are stored in static structures which will be overwritten and freed up more than once. Set static methods to NULL when the ENGINE is freed so it can be reloaded.
This commit is contained in:
		
							parent
							
								
									3ebe87473c
								
							
						
					
					
						commit
						957c7c0e88
					
				|  | @ -64,6 +64,13 @@ static int gost_engine_finish(ENGINE *e) | |||
| static int gost_engine_destroy(ENGINE *e) | ||||
| 	{  | ||||
| 	gost_param_free(); | ||||
| 
 | ||||
| 	pmeth_GostR3410_94 = NULL; | ||||
| 	pmeth_GostR3410_2001 = NULL; | ||||
| 	pmeth_Gost28147_MAC = NULL; | ||||
| 	ameth_GostR3410_94 = NULL; | ||||
| 	ameth_GostR3410_2001 = NULL; | ||||
| 	ameth_Gost28147_MAC = NULL; | ||||
| 	return 1; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -263,7 +270,10 @@ static ENGINE *engine_gost(void) | |||
| 	 | ||||
| void ENGINE_load_gost(void) | ||||
| 	{ | ||||
| 	ENGINE *toadd =engine_gost(); | ||||
| 	ENGINE *toadd; | ||||
| 	if (pmeth_GostR3410_94) | ||||
| 		return; | ||||
| 	toadd = engine_gost(); | ||||
| 	if (!toadd) return; | ||||
| 	ENGINE_add(toadd); | ||||
| 	ENGINE_free(toadd); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue