diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2021-09-22 13:10:39 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2021-09-22 13:10:39 -0300 |
commit | deac067ed39a44c001599c0d15de09872496b2aa (patch) | |
tree | d7373651e7d54a8ca5ffa4841379a4d9149164aa /lauxlib.h | |
parent | 2ff34717227b8046b0fdcb96206f11f5e888664e (diff) | |
download | lua-deac067ed39a44c001599c0d15de09872496b2aa.tar.gz lua-deac067ed39a44c001599c0d15de09872496b2aa.tar.bz2 lua-deac067ed39a44c001599c0d15de09872496b2aa.zip |
Avoid overflows when incrementing parameters in C
Any C function can receive maxinteger as an integer argument, and
therefore cannot increment it without some care (e.g., doing unsigned
arithmetic as the core does).
Diffstat (limited to 'lauxlib.h')
-rw-r--r-- | lauxlib.h | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -154,6 +154,14 @@ LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname, | |||
154 | #define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) | 154 | #define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) |
155 | 155 | ||
156 | 156 | ||
157 | /* | ||
158 | ** Perform arithmetic operations on lua_Integer values with wrap-around | ||
159 | ** semantics, as the Lua core does. | ||
160 | */ | ||
161 | #define luaL_intop(op,v1,v2) \ | ||
162 | ((lua_Integer)((lua_Unsigned)(v1) op (lua_Unsigned)(v2))) | ||
163 | |||
164 | |||
157 | /* push the value used to represent failure/error */ | 165 | /* push the value used to represent failure/error */ |
158 | #define luaL_pushfail(L) lua_pushnil(L) | 166 | #define luaL_pushfail(L) lua_pushnil(L) |
159 | 167 | ||