diff --git a/src/library_manager/llext_manager.c b/src/library_manager/llext_manager.c index 75a2a7295482..022aba3c74e4 100644 --- a/src/library_manager/llext_manager.c +++ b/src/library_manager/llext_manager.c @@ -548,6 +548,16 @@ static int llext_manager_mod_init(struct lib_manager_mod_ctx *ctx, n_mod++; } + /* + * A manifest with no distinct module segments would leave n_mod == 0, + * making the ctx->mod[n_mod - 1] accesses below index out of bounds + */ + if (!n_mod) { + tr_err(&lib_manager_tr, "no module segments in %u entries", + desc->header.num_module_entries); + return -EINVAL; + } + /* * Loadable modules are loaded to DRAM once and never unloaded from it. * Context, related to them, is never freed