浏览代码

Merge pull request #34310 from qarmin/shift_operators

Don't allow to use too big or too small shift count
Rémi Verschelde 5 年之前
父节点
当前提交
d31ff039ed
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      core/variant_op.cpp

+ 4 - 0
core/variant_op.cpp

@@ -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);
 			}