Aric Stewart : oleaut32: In variants check bOverflow to make sure not to accidently overun static buffers in an overflow case (Coverity 313).

Alexandre Julliard julliard at winehq.org
Tue Oct 7 08:54:27 CDT 2008


Module: wine
Branch: master
Commit: 3b3ed7a0208fd655fc183cb70aba8af610212fc0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3b3ed7a0208fd655fc183cb70aba8af610212fc0

Author: Aric Stewart <aric at codeweavers.com>
Date:   Fri Oct  3 10:24:06 2008 -0500

oleaut32: In variants check bOverflow to make sure not to accidently overun static buffers in an overflow case (Coverity 313).

---

 dlls/oleaut32/variant.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c
index f6dcbf1..e96325f 100644
--- a/dlls/oleaut32/variant.c
+++ b/dlls/oleaut32/variant.c
@@ -2322,7 +2322,7 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig,
       whole = whole * dblMultipliers[10];
       multiplier10 -= 10;
     }
-    if (multiplier10)
+    if (multiplier10 && !bOverflow)
     {
       if (whole > dblMaximums[multiplier10])
       {
@@ -2333,9 +2333,10 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig,
         whole = whole * dblMultipliers[multiplier10];
     }
 
-    TRACE("Scaled double value is %16.16g\n", whole);
+    if (!bOverflow)
+        TRACE("Scaled double value is %16.16g\n", whole);
 
-    while (divisor10 > 10)
+    while (divisor10 > 10 && !bOverflow)
     {
       if (whole < dblMinimums[10] && whole != 0)
       {
@@ -2346,7 +2347,7 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig,
       whole = whole / dblMultipliers[10];
       divisor10 -= 10;
     }
-    if (divisor10)
+    if (divisor10 && !bOverflow)
     {
       if (whole < dblMinimums[divisor10] && whole != 0)
       {




More information about the wine-cvs mailing list