Gitweb:
http://git.exim.org/exim.git/commitdiff/54e7ce4ad20a6977ee895a358259122bf3630090
Commit: 54e7ce4ad20a6977ee895a358259122bf3630090
Parent: b9d8b5586790946de2fef94e0b8c43d573a71090
Author: Phil Pennock <pdp@???>
AuthorDate: Tue Apr 12 04:24:12 2011 -0400
Committer: Phil Pennock <pdp@???>
CommitDate: Tue Apr 12 04:24:12 2011 -0400
Catch divide-by-zero in ${eval:...}.
Fixes 1102
---
doc/doc-txt/ChangeLog | 3 +++
src/src/expand.c | 11 ++++++++++-
2 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index ce78086..e6684b4 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -21,6 +21,9 @@ PP/05 Don't segfault on misconfiguration of ref:name exim-user as uid.
PP/06 Extra paranoia around buffer usage at the STARTTLS transition.
nb: Exim is not vulnerable to http://www.kb.cert.org/vuls/id/555316
+PP/07 Catch divide-by-zero in ${eval:...}.
+ Fixes bugzilla 1102.
+
Exim version 4.75
-----------------
diff --git a/src/src/expand.c b/src/src/expand.c
index bf425ae..06e0eb0 100644
--- a/src/src/expand.c
+++ b/src/src/expand.c
@@ -3107,7 +3107,16 @@ if (*error == NULL)
int y = eval_op_unary(&s, decimal, error);
if (*error != NULL) break;
if (op == '*') x *= y;
- else if (op == '/') x /= y;
+ else if (op == '/')
+ {
+ if (y == 0)
+ {
+ *error = US"divide by zero";
+ x = 0;
+ break;
+ }
+ x /= y;
+ }
else x %= y;
}
}