=?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