--- /dev/null
+--- a/lua/uci.c
++++ b/lua/uci.c
+@@ -266,7 +266,7 @@ uci_lua_foreach(lua_State *L)
+ {
+ struct uci_context *ctx;
+ struct uci_package *p;
+- struct uci_element *e;
++ struct uci_element *e, *tmp;
+ const char *package, *type;
+ bool ret = false;
+ int offset = 0;
+@@ -287,7 +287,7 @@ uci_lua_foreach(lua_State *L)
+ if (!p)
+ goto done;
+
+- uci_foreach_element(&p->sections, e) {
++ uci_foreach_element_safe(&p->sections, tmp, e) {
+ struct uci_section *s = uci_to_section(e);
+
+ i++;