=?UTF-8?Q?Luk=C3=A1=C5=A1=20Krej=C4=8D=C3=AD=20?=: mciqtz32: Don' t overflow seek times during multiplication.

Alexandre Julliard julliard at winehq.org
Thu May 30 16:27:13 CDT 2019


Module: wine
Branch: master
Commit: 1d9a3f6d12322891a2af4aadd66a92ea66479233
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=1d9a3f6d12322891a2af4aadd66a92ea66479233

Author: Lukáš Krejčí <lskrejci at gmail.com>
Date:   Wed May 29 08:42:10 2019 +0200

mciqtz32: Don't overflow seek times during multiplication.

Seek times are of type REFERENCE_TIME (64-bit), but the multiplication
is done in DWORD (32-bit).

Signed-off-by: Lukáš Krejčí <lskrejci at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mciqtz32/mciqtz.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/dlls/mciqtz32/mciqtz.c b/dlls/mciqtz32/mciqtz.c
index 1aec326..ec4a8b5 100644
--- a/dlls/mciqtz32/mciqtz.c
+++ b/dlls/mciqtz32/mciqtz.c
@@ -422,20 +422,19 @@ static DWORD MCIQTZ_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms
     wma->mci_flags = dwFlags;
     IMediaSeeking_GetTimeFormat(wma->seek, &format);
     if (dwFlags & MCI_FROM) {
+        wma->seek_start = lpParms->dwFrom;
         if (IsEqualGUID(&format, &TIME_FORMAT_MEDIA_TIME))
-            wma->seek_start = lpParms->dwFrom * 10000;
-        else
-            wma->seek_start = lpParms->dwFrom;
+            wma->seek_start *= 10000;
+
         start_flags = AM_SEEKING_AbsolutePositioning;
     } else {
         wma->seek_start = 0;
         start_flags = AM_SEEKING_NoPositioning;
     }
     if (dwFlags & MCI_TO) {
+        wma->seek_stop = lpParms->dwTo;
         if (IsEqualGUID(&format, &TIME_FORMAT_MEDIA_TIME))
-            wma->seek_stop = lpParms->dwTo * 10000;
-        else
-            wma->seek_stop = lpParms->dwTo;
+            wma->seek_stop *= 10000;
     } else {
         wma->seek_stop = 0;
         IMediaSeeking_GetDuration(wma->seek, &wma->seek_stop);




More information about the wine-cvs mailing list