Loading crypto/dso/dso.h +10 −2 Original line number Diff line number Diff line Loading @@ -82,11 +82,18 @@ extern "C" { * prompted the user for a path to a driver library so the filename should be * interpreted as-is. */ #define DSO_FLAG_NO_NAME_TRANSLATION 0x01 /* An extra flag to give if only the extension should be added as * translation. This is obviously only of importance on Unix and * other operating systems where the translation also may prefix * the name with something, like 'lib', and ignored everywhere else. * This flag is also ignored if DSO_FLAG_NO_NAME_TRANSLATION is used * at the same time. */ #define DSO_FLAG_NAME_TRANSLATION_EXT_ONLY 0x02 /* The following flag controls the translation of symbol names to upper * case. This is currently only being implemented for OpenVMS. */ #define DSO_FLAG_UPCASE_SYMBOL 0x02 #define DSO_FLAG_UPCASE_SYMBOL 0x10 typedef void (*DSO_FUNC_TYPE)(void); Loading Loading @@ -182,6 +189,7 @@ int DSO_free(DSO *dso); int DSO_flags(DSO *dso); int DSO_up(DSO *dso); long DSO_ctrl(DSO *dso, int cmd, long larg, void *parg); /* This function sets the DSO's name_converter callback. If it is non-NULL, * then it will be used instead of the associated DSO_METHOD's function. If * oldcb is non-NULL then it is set to the function pointer value being Loading crypto/dso/dso_dl.c +15 −8 Original line number Diff line number Diff line Loading @@ -240,16 +240,18 @@ static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname) static char *dl_name_converter(DSO *dso, const char *filename) { char *translated; int len, transform; int len, rsize, transform; len = strlen(filename); rsize = len + 1; transform = (strstr(filename, "/") == NULL); if(transform) /* We will convert this to "lib%s.so" */ translated = OPENSSL_malloc(len + 7); else /* We will simply duplicate filename */ translated = OPENSSL_malloc(len + 1); { /* We will convert this to "%s.so" or "lib%s.so" */ rsize += 3; /* The length of ".so" */ if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) rsize += 3; /* The length of "lib" */ } translated = OPENSSL_malloc(rsize); if(translated == NULL) { DSOerr(DSO_F_DL_NAME_CONVERTER, Loading @@ -257,7 +259,12 @@ static char *dl_name_converter(DSO *dso, const char *filename) return(NULL); } if(transform) { if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) sprintf(translated, "lib%s.so", filename); else sprintf(translated, "%s.so", filename); } else sprintf(translated, "%s", filename); return(translated); Loading crypto/dso/dso_dlfcn.c +15 −7 Original line number Diff line number Diff line Loading @@ -252,16 +252,19 @@ static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname) static char *dlfcn_name_converter(DSO *dso, const char *filename) { char *translated; int len, transform; int len, rsize, transform; len = strlen(filename); rsize = len + 1; transform = (strstr(filename, "/") == NULL); if(transform) /* We will convert this to "lib%s.so" */ translated = OPENSSL_malloc(len + 7); else /* We will simply duplicate filename */ translated = OPENSSL_malloc(len + 1); { /* We will convert this to "%s.so" or "lib%s.so" */ rsize += 3; /* The length of ".so" */ if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) rsize += 3; /* The length of "lib" */ } translated = OPENSSL_malloc(rsize); if(translated == NULL) { DSOerr(DSO_F_DLFCN_NAME_CONVERTER, Loading @@ -269,7 +272,12 @@ static char *dlfcn_name_converter(DSO *dso, const char *filename) return(NULL); } if(transform) { if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) sprintf(translated, "lib%s.so", filename); else sprintf(translated, "%s.so", filename); } else sprintf(translated, "%s", filename); return(translated); Loading Loading
crypto/dso/dso.h +10 −2 Original line number Diff line number Diff line Loading @@ -82,11 +82,18 @@ extern "C" { * prompted the user for a path to a driver library so the filename should be * interpreted as-is. */ #define DSO_FLAG_NO_NAME_TRANSLATION 0x01 /* An extra flag to give if only the extension should be added as * translation. This is obviously only of importance on Unix and * other operating systems where the translation also may prefix * the name with something, like 'lib', and ignored everywhere else. * This flag is also ignored if DSO_FLAG_NO_NAME_TRANSLATION is used * at the same time. */ #define DSO_FLAG_NAME_TRANSLATION_EXT_ONLY 0x02 /* The following flag controls the translation of symbol names to upper * case. This is currently only being implemented for OpenVMS. */ #define DSO_FLAG_UPCASE_SYMBOL 0x02 #define DSO_FLAG_UPCASE_SYMBOL 0x10 typedef void (*DSO_FUNC_TYPE)(void); Loading Loading @@ -182,6 +189,7 @@ int DSO_free(DSO *dso); int DSO_flags(DSO *dso); int DSO_up(DSO *dso); long DSO_ctrl(DSO *dso, int cmd, long larg, void *parg); /* This function sets the DSO's name_converter callback. If it is non-NULL, * then it will be used instead of the associated DSO_METHOD's function. If * oldcb is non-NULL then it is set to the function pointer value being Loading
crypto/dso/dso_dl.c +15 −8 Original line number Diff line number Diff line Loading @@ -240,16 +240,18 @@ static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname) static char *dl_name_converter(DSO *dso, const char *filename) { char *translated; int len, transform; int len, rsize, transform; len = strlen(filename); rsize = len + 1; transform = (strstr(filename, "/") == NULL); if(transform) /* We will convert this to "lib%s.so" */ translated = OPENSSL_malloc(len + 7); else /* We will simply duplicate filename */ translated = OPENSSL_malloc(len + 1); { /* We will convert this to "%s.so" or "lib%s.so" */ rsize += 3; /* The length of ".so" */ if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) rsize += 3; /* The length of "lib" */ } translated = OPENSSL_malloc(rsize); if(translated == NULL) { DSOerr(DSO_F_DL_NAME_CONVERTER, Loading @@ -257,7 +259,12 @@ static char *dl_name_converter(DSO *dso, const char *filename) return(NULL); } if(transform) { if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) sprintf(translated, "lib%s.so", filename); else sprintf(translated, "%s.so", filename); } else sprintf(translated, "%s", filename); return(translated); Loading
crypto/dso/dso_dlfcn.c +15 −7 Original line number Diff line number Diff line Loading @@ -252,16 +252,19 @@ static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname) static char *dlfcn_name_converter(DSO *dso, const char *filename) { char *translated; int len, transform; int len, rsize, transform; len = strlen(filename); rsize = len + 1; transform = (strstr(filename, "/") == NULL); if(transform) /* We will convert this to "lib%s.so" */ translated = OPENSSL_malloc(len + 7); else /* We will simply duplicate filename */ translated = OPENSSL_malloc(len + 1); { /* We will convert this to "%s.so" or "lib%s.so" */ rsize += 3; /* The length of ".so" */ if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) rsize += 3; /* The length of "lib" */ } translated = OPENSSL_malloc(rsize); if(translated == NULL) { DSOerr(DSO_F_DLFCN_NAME_CONVERTER, Loading @@ -269,7 +272,12 @@ static char *dlfcn_name_converter(DSO *dso, const char *filename) return(NULL); } if(transform) { if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) sprintf(translated, "lib%s.so", filename); else sprintf(translated, "%s.so", filename); } else sprintf(translated, "%s", filename); return(translated); Loading