From: John Chadwick Subject: [PATCH v4] wintab32: Use 64-bit math in ScaleForContext. Message-Id: <20191117222640.12534-1-john@jchw.io> Date: Sun, 17 Nov 2019 14:26:40 -0800 With some tablet configurations, the InExt value passed to ScaleForContext can be very large, leading to an integer overflow. Using MulDiv prevents this problem by internally using 64-bit math. Signed-off-by: John Chadwick --- dlls/wintab32/context.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/wintab32/context.c b/dlls/wintab32/context.c index 0514dd78b4..ff9a4ca677 100644 --- a/dlls/wintab32/context.c +++ b/dlls/wintab32/context.c @@ -178,9 +178,9 @@ int TABLET_PostTabletMessage(LPOPENCONTEXT newcontext, UINT msg, WPARAM wParam, static inline DWORD ScaleForContext(DWORD In, LONG InOrg, LONG InExt, LONG OutOrg, LONG OutExt) { if (((InExt > 0 )&&(OutExt > 0)) || ((InExt<0) && (OutExt < 0))) - return ((In - InOrg) * abs(OutExt) / abs(InExt)) + OutOrg; + return MulDiv(In - InOrg, abs(OutExt), abs(InExt)) + OutOrg; else - return ((abs(InExt) - (In - InOrg))*abs(OutExt) / abs(InExt)) + OutOrg; + return MulDiv(abs(InExt) - (In - InOrg), abs(OutExt), abs(InExt)) + OutOrg; } LPOPENCONTEXT AddPacketToContextQueue(LPWTPACKET packet, HWND hwnd) -- 2.23.0