From d1e60a3b8f8a154a33e935279a6aeb356686efda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= Date: Mon, 16 Sep 2013 14:59:32 +0200 Subject: [PATCH] Disallow unloading of static modules --- src/fe-common/core/fe-modules.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/fe-common/core/fe-modules.c b/src/fe-common/core/fe-modules.c index 4a13f668..df97ceb1 100644 --- a/src/fe-common/core/fe-modules.c +++ b/src/fe-common/core/fe-modules.c @@ -195,6 +195,8 @@ static void cmd_unload(const char *data) MODULE_FILE_REC *file; char *rootmodule, *submodule; void *free_arg; + GSList *tmp; + int all_dynamic; g_return_if_fail(data != NULL); @@ -204,14 +206,21 @@ static void cmd_unload(const char *data) module = module_find(rootmodule); if (module != NULL) { - if (*submodule == '\0') - module_unload(module); + if (*submodule == '\0') { + all_dynamic = 1; + for (tmp = module->files; tmp != NULL; tmp = tmp->next) + all_dynamic &= !MODULE_IS_STATIC((MODULE_FILE_REC*) tmp->data); + if (all_dynamic) + module_unload(module); + } else { file = module_file_find(module, submodule); - if (file != NULL) - module_file_unload(file); + if (file != NULL) { + if (!MODULE_IS_STATIC(file)) + module_file_unload(file); + } else - module = NULL; + module = NULL; } }