summaryrefslogtreecommitdiff
path: root/sys/modules/lua/lua.c
diff options
context:
space:
mode:
authorsalazar <salazar@NetBSD.org>2016-05-21 12:39:32 +0000
committersalazar <salazar@NetBSD.org>2016-05-21 12:39:32 +0000
commitce3bce3f87dd6403b9380c4a45751eb9105d12bc (patch)
tree9286cee8fe935f6768f395b3e6587f5ff608539e /sys/modules/lua/lua.c
parentebea55f3cd543aa4f1cec3a62c8bdd1d8a08f01b (diff)
fix double require bug
Diffstat (limited to 'sys/modules/lua/lua.c')
-rw-r--r--sys/modules/lua/lua.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/modules/lua/lua.c b/sys/modules/lua/lua.c
index 7f69436910e..55a19fb8752 100644
--- a/sys/modules/lua/lua.c
+++ b/sys/modules/lua/lua.c
@@ -1,4 +1,4 @@
-/* $NetBSD: lua.c,v 1.16 2015/02/07 04:09:13 christos Exp $ */
+/* $NetBSD: lua.c,v 1.17 2016/05/21 12:39:32 salazar Exp $ */
/*
* Copyright (c) 2014 by Lourival Vieira Neto <lneto@NetBSD.org>.
@@ -355,7 +355,10 @@ luaioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
case LUAREQUIRE: /* 'require' a module in a State */
require = data;
LIST_FOREACH(s, &lua_states, lua_next)
- if (!strcmp(s->lua_name, require->state))
+ if (!strcmp(s->lua_name, require->state)) {
+ LIST_FOREACH(m, &s->lua_modules, mod_next)
+ if (!strcmp(m->mod_name, require->module))
+ return ENXIO;
LIST_FOREACH(m, &lua_modules, mod_next)
if (!strcmp(m->mod_name,
require->module)) {
@@ -379,6 +382,7 @@ luaioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
mod_next);
return 0;
}
+ }
return ENXIO;
case LUALOAD:
load = data;