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>
This commit is contained in:
parent
d35df8adda
commit
171469e313
1 changed files with 4 additions and 1 deletions
|
@ -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…
Add table
Reference in a new issue