mirror of https://github.com/openssl/openssl.git
				
				
				
			Add the possibility to have symbols loaded globally with DSO.
This commit is contained in:
		
							parent
							
								
									98cec7fc7b
								
							
						
					
					
						commit
						e666c4599f
					
				
							
								
								
									
										3
									
								
								CHANGES
								
								
								
								
							
							
						
						
									
										3
									
								
								CHANGES
								
								
								
								
							|  | @ -4,6 +4,9 @@ | |||
| 
 | ||||
|  Changes between 0.9.7c and 0.9.8  [xx XXX xxxx] | ||||
| 
 | ||||
|   *) Add the possibility to load symbols globally with DSO. | ||||
|      [Götz Babin-Ebell <babin-ebell@trustcenter.de> via Richard Levitte] | ||||
| 
 | ||||
|   *) Add the functions ERR_set_mark() and ERR_pop_to_mark() for better | ||||
|      control of the error stack. | ||||
|      [Richard Levitte] | ||||
|  |  | |||
|  | @ -95,6 +95,13 @@ extern "C" { | |||
|  */ | ||||
| #define DSO_FLAG_UPCASE_SYMBOL			0x10 | ||||
| 
 | ||||
| /* This flag loads the library with public symbols.
 | ||||
|  * Meaning: The exported symbols of this library are public | ||||
|  * to all libraries loaded after this library. | ||||
|  * At the moment only implemented in unix. | ||||
|  */ | ||||
| #define DSO_FLAG_GLOBAL_SYMBOLS			0x20 | ||||
| 
 | ||||
| 
 | ||||
| typedef void (*DSO_FUNC_TYPE)(void); | ||||
| 
 | ||||
|  |  | |||
|  | @ -140,13 +140,19 @@ static int dlfcn_load(DSO *dso) | |||
| 	void *ptr = NULL; | ||||
| 	/* See applicable comments in dso_dl.c */ | ||||
| 	char *filename = DSO_convert_filename(dso, NULL); | ||||
| 	int flags = DLOPEN_FLAG; | ||||
| 
 | ||||
| 	if(filename == NULL) | ||||
| 		{ | ||||
| 		DSOerr(DSO_F_DLFCN_LOAD,DSO_R_NO_FILENAME); | ||||
| 		goto err; | ||||
| 		} | ||||
| 	ptr = dlopen(filename, DLOPEN_FLAG); | ||||
| 
 | ||||
| #ifdef RTLD_GLOBAL | ||||
| 	if (dso->flags & DSO_FLAG_GLOBAL_SYMBOLS) | ||||
| 		flags |= RTLD_GLOBAL; | ||||
| #endif | ||||
| 	ptr = dlopen(filename, flags); | ||||
| 	if(ptr == NULL) | ||||
| 		{ | ||||
| 		DSOerr(DSO_F_DLFCN_LOAD,DSO_R_LOAD_FAILED); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue