Module: wine Branch: master Commit: 3b3ed7a0208fd655fc183cb70aba8af610212fc0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3b3ed7a0208fd655fc183cb70a...
Author: Aric Stewart aric@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) {