summaryrefslogtreecommitdiffstats
path: root/src/util/verto/module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/verto/module.c')
-rw-r--r--src/util/verto/module.c179
1 files changed, 3 insertions, 176 deletions
diff --git a/src/util/verto/module.c b/src/util/verto/module.c
index d5977cbbc..68dc7093d 100644
--- a/src/util/verto/module.c
+++ b/src/util/verto/module.c
@@ -22,138 +22,25 @@
* SOFTWARE.
*/
-#ifdef WIN32
-#include <windows.h>
-#define dlltype HMODULE
-static char *
-dllerror(void) {
- char *amsg;
- LPTSTR msg;
+/* Stub implementation of module loading for MIT krb5 bundled libverto. */
- FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
- | FORMAT_MESSAGE_FROM_SYSTEM
- | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &msg, 0, NULL);
- amsg = strdup((const char*) msg);
- LocalFree(msg);
- return amsg;
-}
-#elif defined(aix)
-#include "sys/ldr.h"
-
-struct Dl_info {
- const char* dli_fname;
-};
-
-static int
-dladdr(void* s, Dl_info* i)
-{
- static const size_t bufSize = 4096;
- G__FastAllocString buf(bufSize);
- char* pldi = buf;
- int r;
-
- r = loadquery(L_GETINFO, pldi, bufSize);
- if (r == -1) {
- i->dli_fname = NULL;
- return 0;
- }
-
- for (ld_info* ldi = (ld_info*) buf;
- ldi->ldinfo_next;
- ldi += ldi->ldinfo_next) {
- char* textBegin = (char*) ldi->ldinfo_textorg;
- if (textBegin < s) {
- char* textEnd = textBegin + ldi->ldinfo_textsize;
- if (textEnd > s) {
- i->dli_fname = ldi->ldinfo_filename;
- return 1;
- }
- }
- }
-
- // First is main(), skip.
- ld_info* ldi = (ld_info*) pldi;
- while (ldi->ldinfo_next) {
- pldi += ldi->ldinfo_next;
- ldi = (ld_info*) pldi;
-
- }
-
- i->dli_fname = NULL;
- return 0;
-}
-#else
-#define _GNU_SOURCE
-#include <stdlib.h>
#include <string.h>
-#include <dlfcn.h>
-#define dlltype void *
-#define dllerror() strdup(dlerror())
-#endif
int
module_symbol_is_present(const char *modname, const char *symbname)
{
-#ifdef WIN32
- return (GetProcAddress(GetModuleHandle(modname), symbname) != NULL ||
- GetProcAddress(GetModuleHandle(NULL), symbname) != NULL);
-#else /* WIN32 */
- void* mod = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL);
- if (mod) {
- void* sym = dlsym(mod, symbname);
- dlclose(mod);
- return sym != NULL;
- }
-#endif /* WIN32 */
return 0;
}
int
module_get_filename_for_symbol(void *addr, char **filename)
{
-#ifdef WIN32
- MEMORY_BASIC_INFORMATION info;
- HMODULE mod;
- char tmp[MAX_PATH];
-
- if (!VirtualQuery(addr, &info, sizeof(info)))
- return 0;
- mod = (HMODULE) info.AllocationBase;
-
- if (!GetModuleFileNameA(mod, tmp, MAX_PATH))
- return 0;
-#else
- const char *tmp;
- Dl_info dlinfo;
-
- if (!dladdr(addr, &dlinfo))
- return 0;
- tmp = dlinfo.dli_fname;
-#endif
-
- if (filename) {
- *filename = strdup(tmp);
- if (!*filename)
- return 0;
- }
-
- return 1;
+ return 0;
}
void
module_close(void *dll)
{
- if (!dll)
- return;
-
-#ifdef WIN32
- FreeLibrary((dlltype) dll);
-#else /* WIN32 */
- dlclose((dlltype) dll);
-#endif /* WIN32 */
}
char *
@@ -161,69 +48,9 @@ module_load(const char *filename, const char *symbname,
int (*shouldload)(void *symb, void *misc, char **err), void *misc,
void **dll, void **symb)
{
- dlltype intdll = NULL;
- void * intsym = NULL;
- char * interr = NULL;
-
if (dll)
*dll = NULL;
if (symb)
*symb = NULL;
-
- /* Open the module library */
-#ifdef WIN32
- /* NOTE: DONT_RESOLVE_DLL_REFERENCES is evil. Don't use this in your own
- * code. However, our design pattern avoids all the issues surrounding a
- * more general use of this evil flag. */
- intdll = LoadLibraryEx(filename, NULL, DONT_RESOLVE_DLL_REFERENCES);
-#else /* WIN32 */
- intdll = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
-#endif /* WIN32 */
- if (!intdll)
- return dllerror();
-
- /* Get the module symbol */
-#ifdef WIN32
- intsym = (void *) GetProcAddress(intdll, symbname);
-#else /* WIN32 */
- intsym = dlsym(intdll, symbname);
-#endif /* WIN32 */
- if (!intsym) {
- module_close(intdll);
- return dllerror();
- }
-
- /* Figure out whether or not to load this module */
- if (!shouldload(intsym, misc, &interr)) {
- module_close(intdll);
- return interr;
- }
-
- /* Re-open the module */
- module_close(intdll);
-#ifdef WIN32
- intdll = LoadLibrary(filename);
-#else /* WIN32 */
- intdll = dlopen(filename, RTLD_NOW | RTLD_LOCAL);
-#endif /* WIN32 */
- if (!intdll) {
- return dllerror();
- }
-
- /* Get the symbol again */
-#ifdef WIN32
- intsym = (void *) GetProcAddress(intdll, symbname);
-#else /* WIN32 */
- intsym = dlsym(intdll, symbname);
-#endif /* WIN32 */
- if (!intsym) {
- module_close(intdll);
- return dllerror();
- }
-
- if (dll)
- *dll = intdll;
- if (symb)
- *symb = intsym;
- return NULL;
+ return strdup("module loading disabled");
}