[cmd] Avoid division by zero in set /a with %

Ann and Jason Edmeades jason at edmeades.me.uk
Sun Jan 6 17:12:38 CST 2013


set /a 8%0 should report division by zero, not actually attempt it!

[Fixes bug 32546 / coverity 752986]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20130106/7643b24f/attachment.html>
-------------- next part --------------
From 89da9f9f2e78ef351929412da0b2b9b9fafb8ab6 Mon Sep 17 00:00:00 2001
From: Jason Edmeades <jason at edmeades.me.uk>
Date: Sun, 6 Jan 2013 20:23:53 +0000
Subject: [cmd] Avoid division by zero in set /a with %

set /a 8%0 should report division by zero, not actually attempt it!

[Fixes bug 32546 / coverity 752986]
---
 programs/cmd/builtins.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index 2899418..7aba90c 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -3661,6 +3661,7 @@ static int WCMD_reduce(OPSTACK **opstack, VARSTACK **varstack) {
             WCMD_pushnumber(NULL, var2&var1, varstack);
             break;
   case '%': var2 = WCMD_popnumber(varstack);
+            if (var1 == 0) return WCMD_DIVIDEBYZERO;
             WCMD_pushnumber(NULL, var2%var1, varstack);
             break;
   case '^': var2 = WCMD_popnumber(varstack);
-- 
1.7.9.5


More information about the wine-patches mailing list