diff options
author | Jan-Philipp Litza <janphilipp@litza.de> | 2015-08-30 15:42:52 +0200 |
---|---|---|
committer | Jan-Philipp Litza <janphilipp@litza.de> | 2015-08-30 15:51:17 +0200 |
commit | e32a877aa48d0e9d87d999026a6c49707b42a7bf (patch) | |
tree | a0d811963f81e51d8a7f9140c8ac6ef35c3d0c65 /libs/luci-lib-jsonc/src | |
parent | 0d5070c51089deb448476f1abadcea8e185eaf9b (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>
Diffstat (limited to 'libs/luci-lib-jsonc/src')
-rw-r--r-- | libs/luci-lib-jsonc/src/jsonc.c | 5 |
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 49cb21f5bc..827fde8843 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); } |