improved error checking and some fixes
[oweals/openssl.git] / crypto / dso / dso_dlfcn.c
index 2d7534afac7d4b683e0f079cc2d9ce50fdde4880..1fd10104c521ccbf29a798091faa078f0e1c81aa 100644 (file)
@@ -237,7 +237,7 @@ static void *dlfcn_bind_var(DSO *dso, const char *symname)
 static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname)
        {
        void *ptr;
-       DSO_FUNC_TYPE sym;
+       DSO_FUNC_TYPE sym, *tsym = &sym;
 
        if((dso == NULL) || (symname == NULL))
                {
@@ -255,7 +255,7 @@ static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname)
                DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE);
                return(NULL);
                }
-       sym = (DSO_FUNC_TYPE)dlsym(ptr, symname);
+       *(void **)(tsym) = dlsym(ptr, symname);
        if(sym == NULL)
                {
                DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE);