diff options
| author | Alin Nastac | 2020-02-03 12:58:04 +0000 |
|---|---|---|
| committer | Jo-Philipp Wich | 2020-03-15 19:49:27 +0000 |
| commit | 171469e3138cce191892e20b6fd35b52c9368064 (patch) | |
| tree | f0328e51b20ea12918a0454322149660895e4bc1 | |
| parent | d35df8adda873dc75d876f72b78e84db8cfa72ee (diff) | |
| download | ubus-171469e3138cce191892e20b6fd35b52c9368064.tar.gz | |
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>
| -rw-r--r-- | lua/ubus.c | 5 |
1 files changed, 4 insertions, 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: |