From 8ec7fd92eb5f41f3baffba91a397296afcd926ab Mon Sep 17 00:00:00 2001 From: Nikolaus Rath Date: Fri, 3 Nov 2017 10:51:06 +0000 Subject: Backed out d92bf83 This change is bogus. fuse_module_factory_t is already a pointer type. Additionally, if dlsym returns NULL, then you will be dereferencing it causing a segfault. In my testing, a segfault will happen even if dlsym returns successfully. Thanks to Michael Theall for spotting! --- lib/fuse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fuse.c b/lib/fuse.c index 3a72cb5..56b863a 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -263,7 +263,7 @@ static int fuse_load_so_module(const char *module) } sprintf(tmp, "fuse_module_%s_factory", module); - factory = *((fuse_module_factory_t *) dlsym(so->handle, tmp)); + *(void**)(&factory) = dlsym(so->handle, tmp); if (factory == NULL) { fprintf(stderr, "fuse: symbol <%s> not found in module: %s\n", tmp, dlerror()); -- cgit v1.2.3