summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJan-Philipp Litza <janphilipp@litza.de>2015-08-30 15:42:52 +0200
committerJan-Philipp Litza <janphilipp@litza.de>2015-08-30 15:51:17 +0200
commite32a877aa48d0e9d87d999026a6c49707b42a7bf (patch)
treea0d811963f81e51d8a7f9140c8ac6ef35c3d0c65
parent0d5070c51089deb448476f1abadcea8e185eaf9b (diff)
luci-lib-jsonc: Ignore non-string-or-number keys in tables
Previously, the following caused a segmentation fault: json.stringify({[{}] = true}) This was caused by lua_tostring() returning NULL for anything but strings and numbers, letting json_object_object_add crash. This patch makes jsonc ignore all keys which have no string representation altogether. Signed-off-by: Jan-Philipp Litza <janphilipp@litza.de>
-rw-r--r--libs/luci-lib-jsonc/src/jsonc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libs/luci-lib-jsonc/src/jsonc.c b/libs/luci-lib-jsonc/src/jsonc.c
index 49cb21f5b..827fde884 100644
--- a/libs/luci-lib-jsonc/src/jsonc.c
+++ b/libs/luci-lib-jsonc/src/jsonc.c
@@ -286,8 +286,9 @@ static struct json_object * _lua_to_json(lua_State *L, int index)
lua_pushvalue(L, -2);
key = lua_tostring(L, -1);
- json_object_object_add(obj, key,
- _lua_to_json(L, lua_gettop(L) - 1));
+ if (key)
+ json_object_object_add(obj, key,
+ _lua_to_json(L, lua_gettop(L) - 1));
lua_pop(L, 2);
}