Catch divide-by-zero in ${eval:...}.
authorPhil Pennock <pdp@exim.org>
Tue, 12 Apr 2011 08:24:12 +0000 (04:24 -0400)
committerPhil Pennock <pdp@exim.org>
Tue, 12 Apr 2011 08:24:12 +0000 (04:24 -0400)
Fixes 1102

doc/doc-txt/ChangeLog
src/src/expand.c

index ce78086a611d46cbe54e30f466408976c652d567..e6684b4e371042f5c2b6ddc6485c7facd53265f9 100644 (file)
@@ -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
 -----------------
index bf425ae81ed6a031378a6f1a3bcb9d48d953d061..06e0eb0ced0d6dd09124c67242aabe00699cb88b 100644 (file)
@@ -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;
     }
   }