Browse Source

lua: avoid truncation of large numeric values

If the Lua number exceeds the maximum value representable by an
unsigned 32bit integer, store it in an unsigned 64bit integer
field instead.

Signed-off-by: Alin Nastac <alin.nastac@gmail.com>
[align code style, reword commit message]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
master
Alin Nastac 1 year ago
committed by Jo-Philipp Wich
parent
commit
171469e313
1 changed files with 4 additions and 1 deletions
  1. +4
    -1
      lua/ubus.c

+ 4
- 1
lua/ubus.c View File

@ -196,7 +196,10 @@ ubus_lua_format_blob(lua_State *L, struct blob_buf *b, bool table)
case LUA_TINT:
#endif
case LUA_TNUMBER:
blobmsg_add_u32(b, key, (uint32_t)lua_tointeger(L, -1));
if ((uint64_t)lua_tonumber(L, -1) > INT_MAX)
blobmsg_add_u64(b, key, (uint64_t)lua_tonumber(L, -1));
else
blobmsg_add_u32(b, key, (uint32_t)lua_tointeger(L, -1));
break;
case LUA_TSTRING:


Loading…
Cancel
Save