[PATCH] ubus/lua: avoid changing key type to string
adrian.frances at netduma.com
adrian.frances at netduma.com
Tue Aug 31 03:39:31 PDT 2021
From: Adrian Frances <adrian.frances at netduma.com>
According to the lua man page for lua_next, it is not
advised to call lua_tolstring when iterating through a
table with lua_next.
When iterating a table in ubus_lua_format_blob_array,
we end up calling lua_tostring, which inside calls
lua_tolstring, converting all non-string keys to a key
format, even for the caller.
This patch fixes the issue by restoring the original key
Signed-off-by: Adrian Frances <adrian.frances at netduma.com>
---
lua/ubus.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lua/ubus.c b/lua/ubus.c
index e2bb081..d949aea 100644
--- a/lua/ubus.c
+++ b/lua/ubus.c
@@ -184,7 +184,9 @@ ubus_lua_format_blob(lua_State *L, struct blob_buf *b, bool table)
{
void *c;
bool rv = true;
- const char *key = table ? lua_tostring(L, -2) : NULL;
+ lua_pushvalue(L,-2);
+ const char *key = table ? lua_tostring(L, -1) : NULL;
+ lua_pop(L,1);
switch (lua_type(L, -1))
{
--
2.25.1
More information about the openwrt-devel
mailing list