Skip to content

Commit

Permalink
Simple decorations: Fix range check for deco->deco_param2
Browse files Browse the repository at this point in the history
Allow any int value, and properly range check it before casting.
  • Loading branch information
sofar authored and paramat committed Dec 8, 2016
1 parent 24719c6 commit 5a2431a
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/script/lua_api/l_mapgen.cpp
Expand Up @@ -972,10 +972,10 @@ int ModApiMapgen::l_register_decoration(lua_State *L)
bool read_deco_simple(lua_State *L, DecoSimple *deco)
{
int index = 1;
int param2;

deco->deco_height = getintfield_default(L, index, "height", 1);
deco->deco_height_max = getintfield_default(L, index, "height_max", 0);
deco->deco_param2 = getintfield_default(L, index, "param2", 0);

if (deco->deco_height <= 0) {
errorstream << "register_decoration: simple decoration height"
Expand All @@ -991,11 +991,13 @@ bool read_deco_simple(lua_State *L, DecoSimple *deco)
return false;
}

if ((deco->deco_param2 < 0) || (deco->deco_param2 > 255)) {
param2 = getintfield_default(L, index, "param2", 0);
if ((param2 < 0) || (param2 > 255)) {
errorstream << "register_decoration: param2 out of bounds (0-255)"
<< std::endl;
return false;
}
deco->deco_param2 = (u8)param2;

return true;
}
Expand Down

0 comments on commit 5a2431a

Please sign in to comment.