diff options
Diffstat (limited to 'lib/libcrypto/dso')
-rw-r--r-- | lib/libcrypto/dso/dso.h | 18 | ||||
-rw-r--r-- | lib/libcrypto/dso/dso_dlfcn.c | 320 | ||||
-rw-r--r-- | lib/libcrypto/dso/dso_err.c | 165 | ||||
-rw-r--r-- | lib/libcrypto/dso/dso_lib.c | 562 | ||||
-rw-r--r-- | lib/libcrypto/dso/dso_null.c | 14 | ||||
-rw-r--r-- | lib/libcrypto/dso/dso_openssl.c | 15 |
6 files changed, 530 insertions, 564 deletions
diff --git a/lib/libcrypto/dso/dso.h b/lib/libcrypto/dso/dso.h index 9010251bbcf..71a8a8af399 100644 --- a/lib/libcrypto/dso/dso.h +++ b/lib/libcrypto/dso/dso.h @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -131,8 +131,7 @@ typedef char* (*DSO_NAME_CONVERTER_FUNC)(DSO *, const char *); * first. */ typedef char* (*DSO_MERGER_FUNC)(DSO *, const char *, const char *); -typedef struct dso_meth_st - { +typedef struct dso_meth_st { const char *name; /* Loads a shared library, NB: new DSO_METHODs must ensure that a * successful load populates the loaded_filename field, and likewise a @@ -172,16 +171,15 @@ typedef struct dso_meth_st int (*finish)(DSO *dso); /* Return pathname of the module containing location */ - int (*pathbyaddr)(void *addr,char *path,int sz); + int (*pathbyaddr)(void *addr, char *path, int sz); /* Perform global symbol lookup, i.e. among *all* modules */ void *(*globallookup)(const char *symname); - } DSO_METHOD; +} DSO_METHOD; /**********************************************************************/ /* The low-level handle type used to refer to a loaded shared library */ -struct dso_st - { +struct dso_st { DSO_METHOD *meth; /* Standard dlopen uses a (void *). Win32 uses a HANDLE. VMS * doesn't use anything but will need to cache the filename @@ -215,7 +213,7 @@ struct dso_st * corresponds to a loaded library or not, and (b) the filename with * which it was actually loaded. */ char *loaded_filename; - }; +}; DSO * DSO_new(void); @@ -230,7 +228,7 @@ long DSO_ctrl(DSO *dso, int cmd, long larg, void *parg); * oldcb is non-NULL then it is set to the function pointer value being * replaced. Return value is non-zero for success. */ int DSO_set_name_converter(DSO *dso, DSO_NAME_CONVERTER_FUNC cb, - DSO_NAME_CONVERTER_FUNC *oldcb); + DSO_NAME_CONVERTER_FUNC *oldcb); /* These functions can be used to get/set the platform-independant filename * used for a DSO. NB: set will fail if the DSO is already loaded. */ const char *DSO_get_filename(DSO *dso); @@ -299,7 +297,7 @@ DSO_METHOD *DSO_METHOD_dlfcn(void); * pathname of cryptolib itself is returned. Negative or zero * return value denotes error. */ -int DSO_pathbyaddr(void *addr,char *path,int sz); +int DSO_pathbyaddr(void *addr, char *path, int sz); /* This function should be used with caution! It looks up symbols in * *all* loaded modules and if module gets unloaded by somebody else diff --git a/lib/libcrypto/dso/dso_dlfcn.c b/lib/libcrypto/dso/dso_dlfcn.c index 648ddb5ac06..245b9b14789 100644 --- a/lib/libcrypto/dso/dso_dlfcn.c +++ b/lib/libcrypto/dso/dso_dlfcn.c @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -61,10 +61,11 @@ #include <openssl/dso.h> #ifndef DSO_DLFCN -DSO_METHOD *DSO_METHOD_dlfcn(void) - { +DSO_METHOD * +DSO_METHOD_dlfcn(void) +{ return NULL; - } +} #else #ifdef HAVE_DLFCN_H @@ -87,8 +88,8 @@ static long dlfcn_ctrl(DSO *dso, int cmd, long larg, void *parg); #endif static char *dlfcn_name_converter(DSO *dso, const char *filename); static char *dlfcn_merger(DSO *dso, const char *filespec1, - const char *filespec2); -static int dlfcn_pathbyaddr(void *addr,char *path,int sz); + const char *filespec2); +static int dlfcn_pathbyaddr(void *addr, char *path, int sz); static void *dlfcn_globallookup(const char *name); static DSO_METHOD dso_meth_dlfcn = { @@ -109,286 +110,269 @@ static DSO_METHOD dso_meth_dlfcn = { NULL, /* finish */ dlfcn_pathbyaddr, dlfcn_globallookup - }; +}; -DSO_METHOD *DSO_METHOD_dlfcn(void) - { - return(&dso_meth_dlfcn); - } +DSO_METHOD * +DSO_METHOD_dlfcn(void) +{ + return (&dso_meth_dlfcn); +} /* For this DSO_METHOD, our meth_data STACK will contain; * (i) the handle (void*) returned from dlopen(). */ -static int dlfcn_load(DSO *dso) - { +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 = RTLD_LAZY; - if(filename == NULL) - { - DSOerr(DSO_F_DLFCN_LOAD,DSO_R_NO_FILENAME); + if (filename == NULL) { + DSOerr(DSO_F_DLFCN_LOAD, DSO_R_NO_FILENAME); goto err; - } + } if (dso->flags & DSO_FLAG_GLOBAL_SYMBOLS) flags |= RTLD_GLOBAL; ptr = dlopen(filename, flags); - if(ptr == NULL) - { - DSOerr(DSO_F_DLFCN_LOAD,DSO_R_LOAD_FAILED); + if (ptr == NULL) { + DSOerr(DSO_F_DLFCN_LOAD, DSO_R_LOAD_FAILED); ERR_add_error_data(4, "filename(", filename, "): ", dlerror()); goto err; - } - if(!sk_void_push(dso->meth_data, (char *)ptr)) - { - DSOerr(DSO_F_DLFCN_LOAD,DSO_R_STACK_ERROR); + } + if (!sk_void_push(dso->meth_data, (char *)ptr)) { + DSOerr(DSO_F_DLFCN_LOAD, DSO_R_STACK_ERROR); goto err; - } + } /* Success */ dso->loaded_filename = filename; - return(1); + return (1); + err: /* Cleanup! */ - if(filename != NULL) + if (filename != NULL) free(filename); - if(ptr != NULL) + if (ptr != NULL) dlclose(ptr); - return(0); + return (0); } -static int dlfcn_unload(DSO *dso) - { +static int +dlfcn_unload(DSO *dso) +{ void *ptr; - if(dso == NULL) - { - DSOerr(DSO_F_DLFCN_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(sk_void_num(dso->meth_data) < 1) - return(1); + if (dso == NULL) { + DSOerr(DSO_F_DLFCN_UNLOAD, ERR_R_PASSED_NULL_PARAMETER); + return (0); + } + if (sk_void_num(dso->meth_data) < 1) + return (1); ptr = sk_void_pop(dso->meth_data); - if(ptr == NULL) - { - DSOerr(DSO_F_DLFCN_UNLOAD,DSO_R_NULL_HANDLE); + if (ptr == NULL) { + DSOerr(DSO_F_DLFCN_UNLOAD, DSO_R_NULL_HANDLE); /* Should push the value back onto the stack in * case of a retry. */ sk_void_push(dso->meth_data, ptr); - return(0); - } + return (0); + } /* For now I'm not aware of any errors associated with dlclose() */ dlclose(ptr); - return(1); - } + return (1); +} -static void *dlfcn_bind_var(DSO *dso, const char *symname) - { +static void * +dlfcn_bind_var(DSO *dso, const char *symname) +{ void *ptr, *sym; - if((dso == NULL) || (symname == NULL)) - { - DSOerr(DSO_F_DLFCN_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - if(sk_void_num(dso->meth_data) < 1) - { - DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_STACK_ERROR); - return(NULL); - } + if ((dso == NULL) || (symname == NULL)) { + DSOerr(DSO_F_DLFCN_BIND_VAR, ERR_R_PASSED_NULL_PARAMETER); + return (NULL); + } + if (sk_void_num(dso->meth_data) < 1) { + DSOerr(DSO_F_DLFCN_BIND_VAR, DSO_R_STACK_ERROR); + return (NULL); + } ptr = sk_void_value(dso->meth_data, sk_void_num(dso->meth_data) - 1); - if(ptr == NULL) - { - DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_NULL_HANDLE); - return(NULL); - } + if (ptr == NULL) { + DSOerr(DSO_F_DLFCN_BIND_VAR, DSO_R_NULL_HANDLE); + return (NULL); + } sym = dlsym(ptr, symname); - if(sym == NULL) - { - DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_SYM_FAILURE); + if (sym == NULL) { + DSOerr(DSO_F_DLFCN_BIND_VAR, DSO_R_SYM_FAILURE); ERR_add_error_data(4, "symname(", symname, "): ", dlerror()); - return(NULL); - } - return(sym); + return (NULL); } + return (sym); +} -static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname) - { +static DSO_FUNC_TYPE +dlfcn_bind_func(DSO *dso, const char *symname) +{ void *ptr; union { DSO_FUNC_TYPE sym; void *dlret; } u; - if((dso == NULL) || (symname == NULL)) - { - DSOerr(DSO_F_DLFCN_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - if(sk_void_num(dso->meth_data) < 1) - { - DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_STACK_ERROR); - return(NULL); - } + if ((dso == NULL) || (symname == NULL)) { + DSOerr(DSO_F_DLFCN_BIND_FUNC, ERR_R_PASSED_NULL_PARAMETER); + return (NULL); + } + if (sk_void_num(dso->meth_data) < 1) { + DSOerr(DSO_F_DLFCN_BIND_FUNC, DSO_R_STACK_ERROR); + return (NULL); + } ptr = sk_void_value(dso->meth_data, sk_void_num(dso->meth_data) - 1); - if(ptr == NULL) - { - DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE); - return(NULL); - } + if (ptr == NULL) { + DSOerr(DSO_F_DLFCN_BIND_FUNC, DSO_R_NULL_HANDLE); + return (NULL); + } u.dlret = dlsym(ptr, symname); - if(u.dlret == NULL) - { - DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE); + if (u.dlret == NULL) { + DSOerr(DSO_F_DLFCN_BIND_FUNC, DSO_R_SYM_FAILURE); ERR_add_error_data(4, "symname(", symname, "): ", dlerror()); - return(NULL); - } - return u.sym; + return (NULL); } + return u.sym; +} -static char *dlfcn_merger(DSO *dso, const char *filespec1, - const char *filespec2) - { +static char * +dlfcn_merger(DSO *dso, const char *filespec1, const char *filespec2) +{ char *merged; size_t len; - if(!filespec1 && !filespec2) - { + if (!filespec1 && !filespec2) { DSOerr(DSO_F_DLFCN_MERGER, - ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } + ERR_R_PASSED_NULL_PARAMETER); + return (NULL); + } /* If the first file specification is a rooted path, it rules. same goes if the second file specification is missing. */ - if (!filespec2 || (filespec1 != NULL && filespec1[0] == '/')) - { + if (!filespec2 || (filespec1 != NULL && filespec1[0] == '/')) { len = strlen(filespec1) + 1; merged = malloc(len); - if(!merged) - { + if (!merged) { DSOerr(DSO_F_DLFCN_MERGER, ERR_R_MALLOC_FAILURE); - return(NULL); - } - strlcpy(merged, filespec1, len); + return (NULL); } + strlcpy(merged, filespec1, len); + } /* If the first file specification is missing, the second one rules. */ - else if (!filespec1) - { + else if (!filespec1) { len = strlen(filespec2) + 1; merged = malloc(strlen(filespec2) + 1); - if(!merged) - { - DSOerr(DSO_F_DLFCN_MERGER, - ERR_R_MALLOC_FAILURE); - return(NULL); - } - strlcpy(merged, filespec2, len); + if (!merged) { + DSOerr(DSO_F_DLFCN_MERGER, ERR_R_MALLOC_FAILURE); + return (NULL); } - else + strlcpy(merged, filespec2, len); + } else /* This part isn't as trivial as it looks. It assumes that the second file specification really is a directory, and makes no checks whatsoever. Therefore, the result becomes the concatenation of filespec2 followed by a slash followed by filespec1. */ - { + { int spec2len, len; spec2len = strlen(filespec2); len = spec2len + (filespec1 ? strlen(filespec1) : 0); - if(filespec2 && filespec2[spec2len - 1] == '/') - { + if (filespec2 && filespec2[spec2len - 1] == '/') { spec2len--; len--; - } + } merged = malloc(len + 2); - if(!merged) - { - DSOerr(DSO_F_DLFCN_MERGER, - ERR_R_MALLOC_FAILURE); - return(NULL); - } + if (!merged) { + DSOerr(DSO_F_DLFCN_MERGER, ERR_R_MALLOC_FAILURE); + return (NULL); + } strlcpy(merged, filespec2, len + 2); merged[spec2len] = '/'; strlcpy(&merged[spec2len + 1], filespec1, len + 1 - spec2len); - } - return(merged); } + return (merged); +} #define DSO_ext ".so" #define DSO_extlen 3 -static char *dlfcn_name_converter(DSO *dso, const char *filename) - { +static char * +dlfcn_name_converter(DSO *dso, const char *filename) +{ char *translated; int len, rsize, transform; len = strlen(filename); rsize = len + 1; transform = (strstr(filename, "/") == NULL); - if(transform) - { + if (transform) { /* We will convert this to "%s.so" or "lib%s.so" etc */ rsize += DSO_extlen; /* The length of ".so" */ if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) rsize += 3; /* The length of "lib" */ - } + } translated = malloc(rsize); - if(translated == NULL) - { + if (translated == NULL) { DSOerr(DSO_F_DLFCN_NAME_CONVERTER, - DSO_R_NAME_TRANSLATION_FAILED); - return(NULL); - } - if(transform) - { + DSO_R_NAME_TRANSLATION_FAILED); + return (NULL); + } + if (transform) { if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) snprintf(translated, rsize, "lib%s" DSO_ext, filename); else snprintf(translated, rsize, "%s" DSO_ext, filename); - } - else + } else snprintf(translated, rsize, "%s", filename); - return(translated); - } + return (translated); +} -static int dlfcn_pathbyaddr(void *addr,char *path,int sz) - { +static int +dlfcn_pathbyaddr(void *addr, char *path, int sz) +{ Dl_info dli; int len; - if (addr == NULL) - { - union { int(*f)(void*,char*,int); void *p; } t = - { dlfcn_pathbyaddr }; + if (addr == NULL) { + union{ + int(*f)(void*, char*, int); + void *p; + } t = { dlfcn_pathbyaddr }; addr = t.p; - } + } - if (dladdr(addr,&dli)) - { + if (dladdr(addr, &dli)) { len = (int)strlen(dli.dli_fname); - if (sz <= 0) return len+1; - if (len >= sz) len=sz-1; - memcpy(path,dli.dli_fname,len); - path[len++]=0; + if (sz <= 0) + return len + 1; + if (len >= sz) + len = sz - 1; + memcpy(path, dli.dli_fname, len); + path[len++] = 0; return len; - } + } ERR_add_error_data(4, "dlfcn_pathbyaddr(): ", dlerror()); return -1; - } +} -static void *dlfcn_globallookup(const char *name) - { - void *ret = NULL,*handle = dlopen(NULL,RTLD_LAZY); - - if (handle) - { - ret = dlsym(handle,name); +static void * +dlfcn_globallookup(const char *name) +{ + void *ret = NULL, *handle = dlopen(NULL, RTLD_LAZY); + + if (handle) { + ret = dlsym(handle, name); dlclose(handle); - } + } return ret; - } +} #endif /* DSO_DLFCN */ diff --git a/lib/libcrypto/dso/dso_err.c b/lib/libcrypto/dso/dso_err.c index 2bb07c25143..e0105f773c1 100644 --- a/lib/libcrypto/dso/dso_err.c +++ b/lib/libcrypto/dso/dso_err.c @@ -7,7 +7,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -68,92 +68,89 @@ #define ERR_FUNC(func) ERR_PACK(ERR_LIB_DSO,func,0) #define ERR_REASON(reason) ERR_PACK(ERR_LIB_DSO,0,reason) -static ERR_STRING_DATA DSO_str_functs[]= - { -{ERR_FUNC(DSO_F_BEOS_BIND_FUNC), "BEOS_BIND_FUNC"}, -{ERR_FUNC(DSO_F_BEOS_BIND_VAR), "BEOS_BIND_VAR"}, -{ERR_FUNC(DSO_F_BEOS_LOAD), "BEOS_LOAD"}, -{ERR_FUNC(DSO_F_BEOS_NAME_CONVERTER), "BEOS_NAME_CONVERTER"}, -{ERR_FUNC(DSO_F_BEOS_UNLOAD), "BEOS_UNLOAD"}, -{ERR_FUNC(DSO_F_DLFCN_BIND_FUNC), "DLFCN_BIND_FUNC"}, -{ERR_FUNC(DSO_F_DLFCN_BIND_VAR), "DLFCN_BIND_VAR"}, -{ERR_FUNC(DSO_F_DLFCN_LOAD), "DLFCN_LOAD"}, -{ERR_FUNC(DSO_F_DLFCN_MERGER), "DLFCN_MERGER"}, -{ERR_FUNC(DSO_F_DLFCN_NAME_CONVERTER), "DLFCN_NAME_CONVERTER"}, -{ERR_FUNC(DSO_F_DLFCN_UNLOAD), "DLFCN_UNLOAD"}, -{ERR_FUNC(DSO_F_DL_BIND_FUNC), "DL_BIND_FUNC"}, -{ERR_FUNC(DSO_F_DL_BIND_VAR), "DL_BIND_VAR"}, -{ERR_FUNC(DSO_F_DL_LOAD), "DL_LOAD"}, -{ERR_FUNC(DSO_F_DL_MERGER), "DL_MERGER"}, -{ERR_FUNC(DSO_F_DL_NAME_CONVERTER), "DL_NAME_CONVERTER"}, -{ERR_FUNC(DSO_F_DL_UNLOAD), "DL_UNLOAD"}, -{ERR_FUNC(DSO_F_DSO_BIND_FUNC), "DSO_bind_func"}, -{ERR_FUNC(DSO_F_DSO_BIND_VAR), "DSO_bind_var"}, -{ERR_FUNC(DSO_F_DSO_CONVERT_FILENAME), "DSO_convert_filename"}, -{ERR_FUNC(DSO_F_DSO_CTRL), "DSO_ctrl"}, -{ERR_FUNC(DSO_F_DSO_FREE), "DSO_free"}, -{ERR_FUNC(DSO_F_DSO_GET_FILENAME), "DSO_get_filename"}, -{ERR_FUNC(DSO_F_DSO_GET_LOADED_FILENAME), "DSO_get_loaded_filename"}, -{ERR_FUNC(DSO_F_DSO_GLOBAL_LOOKUP), "DSO_global_lookup"}, -{ERR_FUNC(DSO_F_DSO_LOAD), "DSO_load"}, -{ERR_FUNC(DSO_F_DSO_MERGE), "DSO_merge"}, -{ERR_FUNC(DSO_F_DSO_NEW_METHOD), "DSO_new_method"}, -{ERR_FUNC(DSO_F_DSO_PATHBYADDR), "DSO_pathbyaddr"}, -{ERR_FUNC(DSO_F_DSO_SET_FILENAME), "DSO_set_filename"}, -{ERR_FUNC(DSO_F_DSO_SET_NAME_CONVERTER), "DSO_set_name_converter"}, -{ERR_FUNC(DSO_F_DSO_UP_REF), "DSO_up_ref"}, -{ERR_FUNC(DSO_F_GLOBAL_LOOKUP_FUNC), "GLOBAL_LOOKUP_FUNC"}, -{ERR_FUNC(DSO_F_PATHBYADDR), "PATHBYADDR"}, -{ERR_FUNC(DSO_F_VMS_BIND_SYM), "VMS_BIND_SYM"}, -{ERR_FUNC(DSO_F_VMS_LOAD), "VMS_LOAD"}, -{ERR_FUNC(DSO_F_VMS_MERGER), "VMS_MERGER"}, -{ERR_FUNC(DSO_F_VMS_UNLOAD), "VMS_UNLOAD"}, -{ERR_FUNC(DSO_F_WIN32_BIND_FUNC), "WIN32_BIND_FUNC"}, -{ERR_FUNC(DSO_F_WIN32_BIND_VAR), "WIN32_BIND_VAR"}, -{ERR_FUNC(DSO_F_WIN32_GLOBALLOOKUP), "WIN32_GLOBALLOOKUP"}, -{ERR_FUNC(DSO_F_WIN32_GLOBALLOOKUP_FUNC), "WIN32_GLOBALLOOKUP_FUNC"}, -{ERR_FUNC(DSO_F_WIN32_JOINER), "WIN32_JOINER"}, -{ERR_FUNC(DSO_F_WIN32_LOAD), "WIN32_LOAD"}, -{ERR_FUNC(DSO_F_WIN32_MERGER), "WIN32_MERGER"}, -{ERR_FUNC(DSO_F_WIN32_NAME_CONVERTER), "WIN32_NAME_CONVERTER"}, -{ERR_FUNC(DSO_F_WIN32_PATHBYADDR), "WIN32_PATHBYADDR"}, -{ERR_FUNC(DSO_F_WIN32_SPLITTER), "WIN32_SPLITTER"}, -{ERR_FUNC(DSO_F_WIN32_UNLOAD), "WIN32_UNLOAD"}, -{0,NULL} - }; +static ERR_STRING_DATA DSO_str_functs[]= { + {ERR_FUNC(DSO_F_BEOS_BIND_FUNC), "BEOS_BIND_FUNC"}, + {ERR_FUNC(DSO_F_BEOS_BIND_VAR), "BEOS_BIND_VAR"}, + {ERR_FUNC(DSO_F_BEOS_LOAD), "BEOS_LOAD"}, + {ERR_FUNC(DSO_F_BEOS_NAME_CONVERTER), "BEOS_NAME_CONVERTER"}, + {ERR_FUNC(DSO_F_BEOS_UNLOAD), "BEOS_UNLOAD"}, + {ERR_FUNC(DSO_F_DLFCN_BIND_FUNC), "DLFCN_BIND_FUNC"}, + {ERR_FUNC(DSO_F_DLFCN_BIND_VAR), "DLFCN_BIND_VAR"}, + {ERR_FUNC(DSO_F_DLFCN_LOAD), "DLFCN_LOAD"}, + {ERR_FUNC(DSO_F_DLFCN_MERGER), "DLFCN_MERGER"}, + {ERR_FUNC(DSO_F_DLFCN_NAME_CONVERTER), "DLFCN_NAME_CONVERTER"}, + {ERR_FUNC(DSO_F_DLFCN_UNLOAD), "DLFCN_UNLOAD"}, + {ERR_FUNC(DSO_F_DL_BIND_FUNC), "DL_BIND_FUNC"}, + {ERR_FUNC(DSO_F_DL_BIND_VAR), "DL_BIND_VAR"}, + {ERR_FUNC(DSO_F_DL_LOAD), "DL_LOAD"}, + {ERR_FUNC(DSO_F_DL_MERGER), "DL_MERGER"}, + {ERR_FUNC(DSO_F_DL_NAME_CONVERTER), "DL_NAME_CONVERTER"}, + {ERR_FUNC(DSO_F_DL_UNLOAD), "DL_UNLOAD"}, + {ERR_FUNC(DSO_F_DSO_BIND_FUNC), "DSO_bind_func"}, + {ERR_FUNC(DSO_F_DSO_BIND_VAR), "DSO_bind_var"}, + {ERR_FUNC(DSO_F_DSO_CONVERT_FILENAME), "DSO_convert_filename"}, + {ERR_FUNC(DSO_F_DSO_CTRL), "DSO_ctrl"}, + {ERR_FUNC(DSO_F_DSO_FREE), "DSO_free"}, + {ERR_FUNC(DSO_F_DSO_GET_FILENAME), "DSO_get_filename"}, + {ERR_FUNC(DSO_F_DSO_GET_LOADED_FILENAME), "DSO_get_loaded_filename"}, + {ERR_FUNC(DSO_F_DSO_GLOBAL_LOOKUP), "DSO_global_lookup"}, + {ERR_FUNC(DSO_F_DSO_LOAD), "DSO_load"}, + {ERR_FUNC(DSO_F_DSO_MERGE), "DSO_merge"}, + {ERR_FUNC(DSO_F_DSO_NEW_METHOD), "DSO_new_method"}, + {ERR_FUNC(DSO_F_DSO_PATHBYADDR), "DSO_pathbyaddr"}, + {ERR_FUNC(DSO_F_DSO_SET_FILENAME), "DSO_set_filename"}, + {ERR_FUNC(DSO_F_DSO_SET_NAME_CONVERTER), "DSO_set_name_converter"}, + {ERR_FUNC(DSO_F_DSO_UP_REF), "DSO_up_ref"}, + {ERR_FUNC(DSO_F_GLOBAL_LOOKUP_FUNC), "GLOBAL_LOOKUP_FUNC"}, + {ERR_FUNC(DSO_F_PATHBYADDR), "PATHBYADDR"}, + {ERR_FUNC(DSO_F_VMS_BIND_SYM), "VMS_BIND_SYM"}, + {ERR_FUNC(DSO_F_VMS_LOAD), "VMS_LOAD"}, + {ERR_FUNC(DSO_F_VMS_MERGER), "VMS_MERGER"}, + {ERR_FUNC(DSO_F_VMS_UNLOAD), "VMS_UNLOAD"}, + {ERR_FUNC(DSO_F_WIN32_BIND_FUNC), "WIN32_BIND_FUNC"}, + {ERR_FUNC(DSO_F_WIN32_BIND_VAR), "WIN32_BIND_VAR"}, + {ERR_FUNC(DSO_F_WIN32_GLOBALLOOKUP), "WIN32_GLOBALLOOKUP"}, + {ERR_FUNC(DSO_F_WIN32_GLOBALLOOKUP_FUNC), "WIN32_GLOBALLOOKUP_FUNC"}, + {ERR_FUNC(DSO_F_WIN32_JOINER), "WIN32_JOINER"}, + {ERR_FUNC(DSO_F_WIN32_LOAD), "WIN32_LOAD"}, + {ERR_FUNC(DSO_F_WIN32_MERGER), "WIN32_MERGER"}, + {ERR_FUNC(DSO_F_WIN32_NAME_CONVERTER), "WIN32_NAME_CONVERTER"}, + {ERR_FUNC(DSO_F_WIN32_PATHBYADDR), "WIN32_PATHBYADDR"}, + {ERR_FUNC(DSO_F_WIN32_SPLITTER), "WIN32_SPLITTER"}, + {ERR_FUNC(DSO_F_WIN32_UNLOAD), "WIN32_UNLOAD"}, + {0, NULL} +}; -static ERR_STRING_DATA DSO_str_reasons[]= - { -{ERR_REASON(DSO_R_CTRL_FAILED) ,"control command failed"}, -{ERR_REASON(DSO_R_DSO_ALREADY_LOADED) ,"dso already loaded"}, -{ERR_REASON(DSO_R_EMPTY_FILE_STRUCTURE) ,"empty file structure"}, -{ERR_REASON(DSO_R_FAILURE) ,"failure"}, -{ERR_REASON(DSO_R_FILENAME_TOO_BIG) ,"filename too big"}, -{ERR_REASON(DSO_R_FINISH_FAILED) ,"cleanup method function failed"}, -{ERR_REASON(DSO_R_INCORRECT_FILE_SYNTAX) ,"incorrect file syntax"}, -{ERR_REASON(DSO_R_LOAD_FAILED) ,"could not load the shared library"}, -{ERR_REASON(DSO_R_NAME_TRANSLATION_FAILED),"name translation failed"}, -{ERR_REASON(DSO_R_NO_FILENAME) ,"no filename"}, -{ERR_REASON(DSO_R_NO_FILE_SPECIFICATION) ,"no file specification"}, -{ERR_REASON(DSO_R_NULL_HANDLE) ,"a null shared library handle was used"}, -{ERR_REASON(DSO_R_SET_FILENAME_FAILED) ,"set filename failed"}, -{ERR_REASON(DSO_R_STACK_ERROR) ,"the meth_data stack is corrupt"}, -{ERR_REASON(DSO_R_SYM_FAILURE) ,"could not bind to the requested symbol name"}, -{ERR_REASON(DSO_R_UNLOAD_FAILED) ,"could not unload the shared library"}, -{ERR_REASON(DSO_R_UNSUPPORTED) ,"functionality not supported"}, -{0,NULL} - }; +static ERR_STRING_DATA DSO_str_reasons[]= { + {ERR_REASON(DSO_R_CTRL_FAILED) , "control command failed"}, + {ERR_REASON(DSO_R_DSO_ALREADY_LOADED) , "dso already loaded"}, + {ERR_REASON(DSO_R_EMPTY_FILE_STRUCTURE) , "empty file structure"}, + {ERR_REASON(DSO_R_FAILURE) , "failure"}, + {ERR_REASON(DSO_R_FILENAME_TOO_BIG) , "filename too big"}, + {ERR_REASON(DSO_R_FINISH_FAILED) , "cleanup method function failed"}, + {ERR_REASON(DSO_R_INCORRECT_FILE_SYNTAX) , "incorrect file syntax"}, + {ERR_REASON(DSO_R_LOAD_FAILED) , "could not load the shared library"}, + {ERR_REASON(DSO_R_NAME_TRANSLATION_FAILED), "name translation failed"}, + {ERR_REASON(DSO_R_NO_FILENAME) , "no filename"}, + {ERR_REASON(DSO_R_NO_FILE_SPECIFICATION) , "no file specification"}, + {ERR_REASON(DSO_R_NULL_HANDLE) , "a null shared library handle was used"}, + {ERR_REASON(DSO_R_SET_FILENAME_FAILED) , "set filename failed"}, + {ERR_REASON(DSO_R_STACK_ERROR) , "the meth_data stack is corrupt"}, + {ERR_REASON(DSO_R_SYM_FAILURE) , "could not bind to the requested symbol name"}, + {ERR_REASON(DSO_R_UNLOAD_FAILED) , "could not unload the shared library"}, + {ERR_REASON(DSO_R_UNSUPPORTED) , "functionality not supported"}, + {0, NULL} +}; #endif -void ERR_load_DSO_strings(void) - { +void +ERR_load_DSO_strings(void) +{ #ifndef OPENSSL_NO_ERR - - if (ERR_func_error_string(DSO_str_functs[0].error) == NULL) - { - ERR_load_strings(0,DSO_str_functs); - ERR_load_strings(0,DSO_str_reasons); - } -#endif + if (ERR_func_error_string(DSO_str_functs[0].error) == NULL) { + ERR_load_strings(0, DSO_str_functs); + ERR_load_strings(0, DSO_str_reasons); } +#endif +} diff --git a/lib/libcrypto/dso/dso_lib.c b/lib/libcrypto/dso/dso_lib.c index 2f77242d475..1ee4e45dce4 100644 --- a/lib/libcrypto/dso/dso_lib.c +++ b/lib/libcrypto/dso/dso_lib.c @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -63,230 +63,223 @@ static DSO_METHOD *default_DSO_meth = NULL; -DSO *DSO_new(void) - { - return(DSO_new_method(NULL)); - } +DSO * +DSO_new(void) +{ + return (DSO_new_method(NULL)); +} -void DSO_set_default_method(DSO_METHOD *meth) - { +void +DSO_set_default_method(DSO_METHOD *meth) +{ default_DSO_meth = meth; - } - -DSO_METHOD *DSO_get_default_method(void) - { - return(default_DSO_meth); - } - -DSO_METHOD *DSO_get_method(DSO *dso) - { - return(dso->meth); - } - -DSO_METHOD *DSO_set_method(DSO *dso, DSO_METHOD *meth) - { +} + +DSO_METHOD * +DSO_get_default_method(void) +{ + return (default_DSO_meth); +} + +DSO_METHOD * +DSO_get_method(DSO *dso) +{ + return (dso->meth); +} + +DSO_METHOD * +DSO_set_method(DSO *dso, DSO_METHOD *meth) +{ DSO_METHOD *mtmp; + mtmp = dso->meth; dso->meth = meth; - return(mtmp); - } + return (mtmp); +} -DSO *DSO_new_method(DSO_METHOD *meth) - { +DSO * +DSO_new_method(DSO_METHOD *meth) +{ DSO *ret; - if(default_DSO_meth == NULL) + if (default_DSO_meth == NULL) /* We default to DSO_METH_openssl() which in turn defaults * to stealing the "best available" method. Will fallback * to DSO_METH_null() in the worst case. */ default_DSO_meth = DSO_METHOD_openssl(); ret = (DSO *)malloc(sizeof(DSO)); - if(ret == NULL) - { - DSOerr(DSO_F_DSO_NEW_METHOD,ERR_R_MALLOC_FAILURE); - return(NULL); - } + if (ret == NULL) { + DSOerr(DSO_F_DSO_NEW_METHOD, ERR_R_MALLOC_FAILURE); + return (NULL); + } memset(ret, 0, sizeof(DSO)); ret->meth_data = sk_void_new_null(); - if(ret->meth_data == NULL) - { + if (ret->meth_data == NULL) { /* sk_new doesn't generate any errors so we do */ - DSOerr(DSO_F_DSO_NEW_METHOD,ERR_R_MALLOC_FAILURE); + DSOerr(DSO_F_DSO_NEW_METHOD, ERR_R_MALLOC_FAILURE); free(ret); - return(NULL); - } - if(meth == NULL) + return (NULL); + } + if (meth == NULL) ret->meth = default_DSO_meth; else ret->meth = meth; ret->references = 1; - if((ret->meth->init != NULL) && !ret->meth->init(ret)) - { + if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { free(ret); - ret=NULL; - } - return(ret); + ret = NULL; } + return (ret); +} -int DSO_free(DSO *dso) - { - int i; - - if(dso == NULL) - { - DSOerr(DSO_F_DSO_FREE,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - - i=CRYPTO_add(&dso->references,-1,CRYPTO_LOCK_DSO); - if(i > 0) return(1); - - if((dso->meth->dso_unload != NULL) && !dso->meth->dso_unload(dso)) - { - DSOerr(DSO_F_DSO_FREE,DSO_R_UNLOAD_FAILED); - return(0); - } - - if((dso->meth->finish != NULL) && !dso->meth->finish(dso)) - { - DSOerr(DSO_F_DSO_FREE,DSO_R_FINISH_FAILED); - return(0); - } - - sk_void_free(dso->meth_data); - if(dso->filename != NULL) - free(dso->filename); - if(dso->loaded_filename != NULL) - free(dso->loaded_filename); - - free(dso); - return(1); +int +DSO_free(DSO *dso) +{ + int i; + + if (dso == NULL) { + DSOerr(DSO_F_DSO_FREE, ERR_R_PASSED_NULL_PARAMETER); + return (0); } -int DSO_flags(DSO *dso) - { - return((dso == NULL) ? 0 : dso->flags); + i = CRYPTO_add(&dso->references, -1, CRYPTO_LOCK_DSO); + if (i > 0) + return (1); + + if ((dso->meth->dso_unload != NULL) && !dso->meth->dso_unload(dso)) { + DSOerr(DSO_F_DSO_FREE, DSO_R_UNLOAD_FAILED); + return (0); } + if ((dso->meth->finish != NULL) && !dso->meth->finish(dso)) { + DSOerr(DSO_F_DSO_FREE, DSO_R_FINISH_FAILED); + return (0); + } -int DSO_up_ref(DSO *dso) - { - if (dso == NULL) - { - DSOerr(DSO_F_DSO_UP_REF,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } + sk_void_free(dso->meth_data); + if (dso->filename != NULL) + free(dso->filename); + if (dso->loaded_filename != NULL) + free(dso->loaded_filename); - CRYPTO_add(&dso->references,1,CRYPTO_LOCK_DSO); - return(1); + free(dso); + return (1); +} + +int +DSO_flags(DSO *dso) +{ + return ((dso == NULL) ? 0 : dso->flags); +} + + +int +DSO_up_ref(DSO *dso) +{ + if (dso == NULL) { + DSOerr(DSO_F_DSO_UP_REF, ERR_R_PASSED_NULL_PARAMETER); + return (0); } -DSO *DSO_load(DSO *dso, const char *filename, DSO_METHOD *meth, int flags) - { + CRYPTO_add(&dso->references, 1, CRYPTO_LOCK_DSO); + return (1); +} + +DSO * +DSO_load(DSO *dso, const char *filename, DSO_METHOD *meth, int flags) +{ DSO *ret; int allocated = 0; - if(dso == NULL) - { + if (dso == NULL) { ret = DSO_new_method(meth); - if(ret == NULL) - { - DSOerr(DSO_F_DSO_LOAD,ERR_R_MALLOC_FAILURE); + if (ret == NULL) { + DSOerr(DSO_F_DSO_LOAD, ERR_R_MALLOC_FAILURE); goto err; - } + } allocated = 1; /* Pass the provided flags to the new DSO object */ - if(DSO_ctrl(ret, DSO_CTRL_SET_FLAGS, flags, NULL) < 0) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_CTRL_FAILED); + if (DSO_ctrl(ret, DSO_CTRL_SET_FLAGS, flags, NULL) < 0) { + DSOerr(DSO_F_DSO_LOAD, DSO_R_CTRL_FAILED); goto err; - } } - else + } else ret = dso; /* Don't load if we're currently already loaded */ - if(ret->filename != NULL) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_DSO_ALREADY_LOADED); + if (ret->filename != NULL) { + DSOerr(DSO_F_DSO_LOAD, DSO_R_DSO_ALREADY_LOADED); goto err; - } + } /* filename can only be NULL if we were passed a dso that already has * one set. */ - if(filename != NULL) - if(!DSO_set_filename(ret, filename)) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_SET_FILENAME_FAILED); - goto err; - } + if (filename != NULL) + if (!DSO_set_filename(ret, filename)) { + DSOerr(DSO_F_DSO_LOAD, DSO_R_SET_FILENAME_FAILED); + goto err; + } filename = ret->filename; - if(filename == NULL) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_NO_FILENAME); + if (filename == NULL) { + DSOerr(DSO_F_DSO_LOAD, DSO_R_NO_FILENAME); goto err; - } - if(ret->meth->dso_load == NULL) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_UNSUPPORTED); + } + if (ret->meth->dso_load == NULL) { + DSOerr(DSO_F_DSO_LOAD, DSO_R_UNSUPPORTED); goto err; - } - if(!ret->meth->dso_load(ret)) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_LOAD_FAILED); + } + if (!ret->meth->dso_load(ret)) { + DSOerr(DSO_F_DSO_LOAD, DSO_R_LOAD_FAILED); goto err; - } + } /* Load succeeded */ - return(ret); + return (ret); + err: - if(allocated) + if (allocated) DSO_free(ret); - return(NULL); - } + return (NULL); +} -void *DSO_bind_var(DSO *dso, const char *symname) - { +void * +DSO_bind_var(DSO *dso, const char *symname) +{ void *ret = NULL; - if((dso == NULL) || (symname == NULL)) - { - DSOerr(DSO_F_DSO_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - if(dso->meth->dso_bind_var == NULL) - { - DSOerr(DSO_F_DSO_BIND_VAR,DSO_R_UNSUPPORTED); - return(NULL); - } - if((ret = dso->meth->dso_bind_var(dso, symname)) == NULL) - { - DSOerr(DSO_F_DSO_BIND_VAR,DSO_R_SYM_FAILURE); - return(NULL); - } - /* Success */ - return(ret); + if ((dso == NULL) || (symname == NULL)) { + DSOerr(DSO_F_DSO_BIND_VAR, ERR_R_PASSED_NULL_PARAMETER); + return (NULL); + } + if (dso->meth->dso_bind_var == NULL) { + DSOerr(DSO_F_DSO_BIND_VAR, DSO_R_UNSUPPORTED); + return (NULL); } + if ((ret = dso->meth->dso_bind_var(dso, symname)) == NULL) { + DSOerr(DSO_F_DSO_BIND_VAR, DSO_R_SYM_FAILURE); + return (NULL); + } + /* Success */ + return (ret); +} -DSO_FUNC_TYPE DSO_bind_func(DSO *dso, const char *symname) - { +DSO_FUNC_TYPE +DSO_bind_func(DSO *dso, const char *symname) +{ DSO_FUNC_TYPE ret = NULL; - if((dso == NULL) || (symname == NULL)) - { - DSOerr(DSO_F_DSO_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - if(dso->meth->dso_bind_func == NULL) - { - DSOerr(DSO_F_DSO_BIND_FUNC,DSO_R_UNSUPPORTED); - return(NULL); - } - if((ret = dso->meth->dso_bind_func(dso, symname)) == NULL) - { - DSOerr(DSO_F_DSO_BIND_FUNC,DSO_R_SYM_FAILURE); - return(NULL); - } - /* Success */ - return(ret); + if ((dso == NULL) || (symname == NULL)) { + DSOerr(DSO_F_DSO_BIND_FUNC, ERR_R_PASSED_NULL_PARAMETER); + return (NULL); } + if (dso->meth->dso_bind_func == NULL) { + DSOerr(DSO_F_DSO_BIND_FUNC, DSO_R_UNSUPPORTED); + return (NULL); + } + if ((ret = dso->meth->dso_bind_func(dso, symname)) == NULL) { + DSOerr(DSO_F_DSO_BIND_FUNC, DSO_R_SYM_FAILURE); + return (NULL); + } + /* Success */ + return (ret); +} /* I don't really like these *_ctrl functions very much to be perfectly * honest. For one thing, I think I have to return a negative value for @@ -296,178 +289,171 @@ DSO_FUNC_TYPE DSO_bind_func(DSO *dso, const char *symname) * odd times. I'd prefer "output" values to be passed by reference and * the return value as success/failure like usual ... but we conform * when we must... :-) */ -long DSO_ctrl(DSO *dso, int cmd, long larg, void *parg) - { - if(dso == NULL) - { - DSOerr(DSO_F_DSO_CTRL,ERR_R_PASSED_NULL_PARAMETER); - return(-1); - } +long +DSO_ctrl(DSO *dso, int cmd, long larg, void *parg) +{ + if (dso == NULL) { + DSOerr(DSO_F_DSO_CTRL, ERR_R_PASSED_NULL_PARAMETER); + return (-1); + } /* We should intercept certain generic commands and only pass control * to the method-specific ctrl() function if it's something we don't * handle. */ - switch(cmd) - { + switch (cmd) { case DSO_CTRL_GET_FLAGS: return dso->flags; case DSO_CTRL_SET_FLAGS: dso->flags = (int)larg; - return(0); + return (0); case DSO_CTRL_OR_FLAGS: dso->flags |= (int)larg; - return(0); + return (0); default: break; - } - if((dso->meth == NULL) || (dso->meth->dso_ctrl == NULL)) - { - DSOerr(DSO_F_DSO_CTRL,DSO_R_UNSUPPORTED); - return(-1); - } - return(dso->meth->dso_ctrl(dso,cmd,larg,parg)); } - -int DSO_set_name_converter(DSO *dso, DSO_NAME_CONVERTER_FUNC cb, - DSO_NAME_CONVERTER_FUNC *oldcb) - { - if(dso == NULL) - { + if ((dso->meth == NULL) || (dso->meth->dso_ctrl == NULL)) { + DSOerr(DSO_F_DSO_CTRL, DSO_R_UNSUPPORTED); + return (-1); + } + return (dso->meth->dso_ctrl(dso, cmd, larg, parg)); +} + +int +DSO_set_name_converter(DSO *dso, DSO_NAME_CONVERTER_FUNC cb, + DSO_NAME_CONVERTER_FUNC *oldcb) +{ + if (dso == NULL) { DSOerr(DSO_F_DSO_SET_NAME_CONVERTER, - ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(oldcb) + ERR_R_PASSED_NULL_PARAMETER); + return (0); + } + if (oldcb) *oldcb = dso->name_converter; dso->name_converter = cb; - return(1); - } - -const char *DSO_get_filename(DSO *dso) - { - if(dso == NULL) - { - DSOerr(DSO_F_DSO_GET_FILENAME,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - return(dso->filename); + return (1); +} + +const char * +DSO_get_filename(DSO *dso) +{ + if (dso == NULL) { + DSOerr(DSO_F_DSO_GET_FILENAME, ERR_R_PASSED_NULL_PARAMETER); + return (NULL); } + return (dso->filename); +} -int DSO_set_filename(DSO *dso, const char *filename) - { +int +DSO_set_filename(DSO *dso, const char *filename) +{ char *copied; - if((dso == NULL) || (filename == NULL)) - { - DSOerr(DSO_F_DSO_SET_FILENAME,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(dso->loaded_filename) - { - DSOerr(DSO_F_DSO_SET_FILENAME,DSO_R_DSO_ALREADY_LOADED); - return(0); - } + if ((dso == NULL) || (filename == NULL)) { + DSOerr(DSO_F_DSO_SET_FILENAME, ERR_R_PASSED_NULL_PARAMETER); + return (0); + } + if (dso->loaded_filename) { + DSOerr(DSO_F_DSO_SET_FILENAME, DSO_R_DSO_ALREADY_LOADED); + return (0); + } /* We'll duplicate filename */ copied = malloc(strlen(filename) + 1); - if(copied == NULL) - { - DSOerr(DSO_F_DSO_SET_FILENAME,ERR_R_MALLOC_FAILURE); - return(0); - } + if (copied == NULL) { + DSOerr(DSO_F_DSO_SET_FILENAME, ERR_R_MALLOC_FAILURE); + return (0); + } strlcpy(copied, filename, strlen(filename) + 1); - if(dso->filename) + if (dso->filename) free(dso->filename); dso->filename = copied; - return(1); - } + return (1); +} -char *DSO_merge(DSO *dso, const char *filespec1, const char *filespec2) - { +char * +DSO_merge(DSO *dso, const char *filespec1, const char *filespec2) +{ char *result = NULL; - if(dso == NULL || filespec1 == NULL) - { - DSOerr(DSO_F_DSO_MERGE,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - if((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0) - { - if(dso->merger != NULL) + if (dso == NULL || filespec1 == NULL) { + DSOerr(DSO_F_DSO_MERGE, ERR_R_PASSED_NULL_PARAMETER); + return (NULL); + } + if ((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0) { + if (dso->merger != NULL) result = dso->merger(dso, filespec1, filespec2); - else if(dso->meth->dso_merger != NULL) + else if (dso->meth->dso_merger != NULL) result = dso->meth->dso_merger(dso, - filespec1, filespec2); - } - return(result); + filespec1, filespec2); } + return (result); +} -char *DSO_convert_filename(DSO *dso, const char *filename) - { +char * +DSO_convert_filename(DSO *dso, const char *filename) +{ char *result = NULL; - if(dso == NULL) - { - DSOerr(DSO_F_DSO_CONVERT_FILENAME,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - if(filename == NULL) + if (dso == NULL) { + DSOerr(DSO_F_DSO_CONVERT_FILENAME, ERR_R_PASSED_NULL_PARAMETER); + return (NULL); + } + if (filename == NULL) filename = dso->filename; - if(filename == NULL) - { - DSOerr(DSO_F_DSO_CONVERT_FILENAME,DSO_R_NO_FILENAME); - return(NULL); - } - if((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0) - { - if(dso->name_converter != NULL) + if (filename == NULL) { + DSOerr(DSO_F_DSO_CONVERT_FILENAME, DSO_R_NO_FILENAME); + return (NULL); + } + if ((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0) { + if (dso->name_converter != NULL) result = dso->name_converter(dso, filename); - else if(dso->meth->dso_name_converter != NULL) + else if (dso->meth->dso_name_converter != NULL) result = dso->meth->dso_name_converter(dso, filename); - } - if(result == NULL) - { + } + if (result == NULL) { result = malloc(strlen(filename) + 1); - if(result == NULL) - { + if (result == NULL) { DSOerr(DSO_F_DSO_CONVERT_FILENAME, - ERR_R_MALLOC_FAILURE); - return(NULL); - } - strlcpy(result, filename, strlen(filename) + 1); + ERR_R_MALLOC_FAILURE); + return (NULL); } - return(result); + strlcpy(result, filename, strlen(filename) + 1); } + return (result); +} -const char *DSO_get_loaded_filename(DSO *dso) - { - if(dso == NULL) - { +const char * +DSO_get_loaded_filename(DSO *dso) +{ + if (dso == NULL) { DSOerr(DSO_F_DSO_GET_LOADED_FILENAME, - ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - return(dso->loaded_filename); + ERR_R_PASSED_NULL_PARAMETER); + return (NULL); } + return (dso->loaded_filename); +} -int DSO_pathbyaddr(void *addr,char *path,int sz) - { +int +DSO_pathbyaddr(void *addr, char *path, int sz) +{ DSO_METHOD *meth = default_DSO_meth; - if (meth == NULL) meth = DSO_METHOD_openssl(); - if (meth->pathbyaddr == NULL) - { - DSOerr(DSO_F_DSO_PATHBYADDR,DSO_R_UNSUPPORTED); + if (meth == NULL) + meth = DSO_METHOD_openssl(); + if (meth->pathbyaddr == NULL) { + DSOerr(DSO_F_DSO_PATHBYADDR, DSO_R_UNSUPPORTED); return -1; - } - return (*meth->pathbyaddr)(addr,path,sz); } + return (*meth->pathbyaddr)(addr, path, sz); +} -void *DSO_global_lookup(const char *name) - { +void * +DSO_global_lookup(const char *name) +{ DSO_METHOD *meth = default_DSO_meth; - if (meth == NULL) meth = DSO_METHOD_openssl(); - if (meth->globallookup == NULL) - { - DSOerr(DSO_F_DSO_GLOBAL_LOOKUP,DSO_R_UNSUPPORTED); + if (meth == NULL) + meth = DSO_METHOD_openssl(); + if (meth->globallookup == NULL) { + DSOerr(DSO_F_DSO_GLOBAL_LOOKUP, DSO_R_UNSUPPORTED); return NULL; - } - return (*meth->globallookup)(name); } + return (*meth->globallookup)(name); +} diff --git a/lib/libcrypto/dso/dso_null.c b/lib/libcrypto/dso/dso_null.c index 49d842d1f56..0c877ab2f26 100644 --- a/lib/libcrypto/dso/dso_null.c +++ b/lib/libcrypto/dso/dso_null.c @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -81,10 +81,10 @@ static DSO_METHOD dso_meth_null = { NULL, /* finish */ NULL, /* pathbyaddr */ NULL /* globallookup */ - }; - -DSO_METHOD *DSO_METHOD_null(void) - { - return(&dso_meth_null); - } +}; +DSO_METHOD * +DSO_METHOD_null(void) +{ + return (&dso_meth_null); +} diff --git a/lib/libcrypto/dso/dso_openssl.c b/lib/libcrypto/dso/dso_openssl.c index 75fdfbd0e11..b79151f3bb0 100644 --- a/lib/libcrypto/dso/dso_openssl.c +++ b/lib/libcrypto/dso/dso_openssl.c @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -62,13 +62,14 @@ /* We just pinch the method from an appropriate "default" method. */ -DSO_METHOD *DSO_METHOD_openssl(void) - { +DSO_METHOD * +DSO_METHOD_openssl(void) +{ #ifdef DEF_DSO_METHOD - return(DEF_DSO_METHOD()); + return (DEF_DSO_METHOD()); #elif defined(DSO_DLFCN) - return(DSO_METHOD_dlfcn()); + return (DSO_METHOD_dlfcn()); #else - return(DSO_METHOD_null()); + return (DSO_METHOD_null()); #endif - } +} |