[gnome-calculator/gnome-3-20] lib: prevents segfault when elements of division to zero have null assigned tokens (fixes #769364)
- From: Alberto Ruiz <aruiz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calculator/gnome-3-20] lib: prevents segfault when elements of division to zero have null assigned tokens (fixes #769364)
- Date: Mon, 1 Aug 2016 08:46:10 +0000 (UTC)
commit 7871becaabb49027b71701c26828f846300aa606
Author: Alberto Ruiz <aruiz gnome org>
Date: Mon Aug 1 09:30:48 2016 +0100
lib: prevents segfault when elements of division to zero have null assigned tokens (fixes #769364)
lib/equation-parser.vala | 6 +++++-
tests/test-equation.vala | 1 +
2 files changed, 6 insertions(+), 1 deletions(-)
---
diff --git a/lib/equation-parser.vala b/lib/equation-parser.vala
index b00224d..994e11d 100644
--- a/lib/equation-parser.vala
+++ b/lib/equation-parser.vala
@@ -577,11 +577,15 @@ public class DivideNode : LRNode
var z = l.divide (r);
if (Number.error != null)
{
+ uint token_start = 0;
+ uint token_end = 0;
var tmpleft = right;
var tmpright = right;
while (tmpleft.left != null) tmpleft = tmpleft.left;
while (tmpright.right != null) tmpright = tmpright.right;
- parser.set_error (ErrorCode.MP, Number.error, tmpleft.token.start_index,
tmpright.token.end_index);
+ if (tmpleft.token != null) token_start = tmpleft.token.start_index;
+ if (tmpright.token != null) token_end = tmpright.token.end_index;
+ parser.set_error (ErrorCode.MP, Number.error, token_start, token_end);
Number.error = null;
}
return z;
diff --git a/tests/test-equation.vala b/tests/test-equation.vala
index 4a4d561..76d1250 100644
--- a/tests/test-equation.vala
+++ b/tests/test-equation.vala
@@ -346,6 +346,7 @@ private void test_equations ()
test ("2÷3", "0.666666667", 0);
test ("1÷0", "", ErrorCode.MP);
test ("0÷0", "", ErrorCode.MP);
+ test ("1÷sin(0)", "", ErrorCode.MP);
/* Precision */
test ("1000000000000000−1000000000000000", "0", 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]