From 2e05c8229ec03f9d33cffe6c286eabe242977230 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Thu, 17 Feb 2022 21:05:46 +0100 Subject: [PATCH] FIX: Change the checks in reg {get,func} to not SEGV when the register don't have the asked module --- src/base/reg.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/base/reg.c b/src/base/reg.c index 7ccdccbf..d02577c4 100644 --- a/src/base/reg.c +++ b/src/base/reg.c @@ -22,8 +22,7 @@ reg_global(struct module_reg **reg_ptr) PRIVATE_FUNCTION void * __reg_get(struct module_reg *reg, const char *name) { - int i; - for (i = 0; (reg + i)->name && (reg + i)->obj; ++i) { + for (int i = 0; (reg + i) && (reg + i)->name && (reg + i)->obj; ++i) { if (STR_MATCH((reg + i)->name, name)) return (reg + i)->obj; } @@ -33,8 +32,7 @@ __reg_get(struct module_reg *reg, const char *name) PRIVATE_FUNCTION reg_func __reg_func(struct module_reg *reg, const char *name) { - int i; - for (i = 0; (reg + i)->name && (reg + i)->func; ++i) { + for (int i = 0; (reg + i) && (reg + i)->name && (reg + i)->func; ++i) { if (STR_MATCH((reg + i)->name, name)) return (reg + i)->func; } @@ -44,8 +42,9 @@ __reg_func(struct module_reg *reg, const char *name) PRIVATE_FUNCTION void * __from_file(const char *file, void **handle, const char *symbol) { - char *error; - *handle = dlopen(file, RTLD_NOW); + void *sym = NULL; + char *error = NULL; + *handle = dlopen(file, RTLD_NOW); if (NULL == *handle) { LOG_ERROR("REG", "libdl error in dlopen on file '%s': %s", file, dlerror()); @@ -53,9 +52,10 @@ __from_file(const char *file, void **handle, const char *symbol) } dlerror(); - void *sym = dlsym(*handle, symbol); + sym = dlsym(*handle, symbol); + error = dlerror(); - if ((error = dlerror()) != NULL) { + if (error != NULL) { LOG_ERROR("REG", "libdl error in dlsym on file '%s': %s\n", file, error); return NULL; } -- GitLab