From 4f16baca43156eb2f8855aeef79b61decf267c52 Mon Sep 17 00:00:00 2001 From: Hein-Pieter van Braam Date: Sat, 9 Sep 2017 01:05:58 +0200 Subject: [PATCH] Don't allow division by false (zero) This fixes #10717 --- core/variant_op.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/core/variant_op.cpp b/core/variant_op.cpp index b6e114b853..be8a8de8b1 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -670,7 +670,34 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a, const Variant & switch (p_a.type) { DEFAULT_OP_FAIL(NIL); - DEFAULT_OP_NUM(/, BOOL, _bool); + case BOOL: { + switch (p_b.type) { + case BOOL: { + int64_t b = p_b._data._bool; + if (b == 0) { + + r_valid = false; + _RETURN("Division By False"); + } + _RETURN(p_a._data._bool / b); + + } break; + case INT: { + int64_t b = p_b._data._int; + if (b == 0) { + + r_valid = false; + _RETURN("Division By Zero"); + } + _RETURN(p_a._data._bool / b); + + } break; + case REAL: _RETURN(p_a._data._bool / p_b._data._real); + default: {} + } + r_valid = false; + return; + }; case INT: { switch (p_b.type) { case BOOL: {