Merge pull request #34310 from qarmin/shift_operators

Don't allow to use too big or too small shift count
This commit is contained in:
Rémi Verschelde
2019-12-13 09:47:43 +01:00
committed by GitHub

View File

@@ -1118,6 +1118,8 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
CASE_TYPE(math, OP_SHIFT_LEFT, INT) {
if (p_b.type != INT)
_RETURN_FAIL;
if (p_b._data._int < 0 || p_b._data._int >= 64)
_RETURN_FAIL;
_RETURN(p_a._data._int << p_b._data._int);
}
@@ -1129,6 +1131,8 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
CASE_TYPE(math, OP_SHIFT_RIGHT, INT) {
if (p_b.type != INT)
_RETURN_FAIL;
if (p_b._data._int < 0 || p_b._data._int >= 64)
_RETURN_FAIL;
_RETURN(p_a._data._int >> p_b._data._int);
}