From: Nikolaus Rath Date: Fri, 3 Nov 2017 10:51:06 +0000 (+0000) Subject: Backed out d92bf83 X-Git-Tag: fuse-3.2.1~2 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=8ec7fd9;p=qemu-gpiodev%2Flibfuse.git 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! --- 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());