[PATCH] winealsa/wineoss/winecoreaudio: calculate frequency in 64bit (Coverity)
Marcus Meissner
marcus at jet.franken.de
Tue Jun 17 01:30:42 CDT 2014
1223059 Unintentional integer overflow
The expression's value may not be what the programmer intended, because
the expression is evaluated using a narrow (i.e. few bits) integer type.
In AudioClock_GetFrequency: An integer overflow occurs, with the result
converted to a wider integer type (CWE-190)
(Basically 32bit integer * 32bit integer is calculated as a 32bit integer
and does not autoextend to 64bit integer. Cast one part to make it
calculate in 64bit.)
---
dlls/winealsa.drv/mmdevdrv.c | 2 +-
dlls/winecoreaudio.drv/mmdevdrv.c | 2 +-
dlls/wineoss.drv/mmdevdrv.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 5e40d6e..7d41110 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -2823,7 +2823,7 @@ static HRESULT WINAPI AudioClock_GetFrequency(IAudioClock *iface, UINT64 *freq)
TRACE("(%p)->(%p)\n", This, freq);
if(This->share == AUDCLNT_SHAREMODE_SHARED)
- *freq = This->fmt->nSamplesPerSec * This->fmt->nBlockAlign;
+ *freq = (UINT64)This->fmt->nSamplesPerSec * This->fmt->nBlockAlign;
else
*freq = This->fmt->nSamplesPerSec;
diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c
index 6603075..81816ca 100644
--- a/dlls/winecoreaudio.drv/mmdevdrv.c
+++ b/dlls/winecoreaudio.drv/mmdevdrv.c
@@ -2421,7 +2421,7 @@ static HRESULT WINAPI AudioClock_GetFrequency(IAudioClock *iface, UINT64 *freq)
TRACE("(%p)->(%p)\n", This, freq);
if(This->share == AUDCLNT_SHAREMODE_SHARED)
- *freq = This->fmt->nSamplesPerSec * This->fmt->nBlockAlign;
+ *freq = (UINT64)This->fmt->nSamplesPerSec * This->fmt->nBlockAlign;
else
*freq = This->fmt->nSamplesPerSec;
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
index dd45fba..1e0e116 100644
--- a/dlls/wineoss.drv/mmdevdrv.c
+++ b/dlls/wineoss.drv/mmdevdrv.c
@@ -2146,7 +2146,7 @@ static HRESULT WINAPI AudioClock_GetFrequency(IAudioClock *iface, UINT64 *freq)
TRACE("(%p)->(%p)\n", This, freq);
if(This->share == AUDCLNT_SHAREMODE_SHARED)
- *freq = This->fmt->nSamplesPerSec * This->fmt->nBlockAlign;
+ *freq = (UINT64)This->fmt->nSamplesPerSec * This->fmt->nBlockAlign;
else
*freq = This->fmt->nSamplesPerSec;
--
1.8.4.5
More information about the wine-patches
mailing list