From: Mao-Yining Date: Fri, 20 Mar 2026 22:06:58 +0000 (+0000) Subject: patch 9.2.0212: MS-Windows: version packing may overflow X-Git-Tag: v9.2.0212^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ee2b76ba1c4f263a5f161da740cedbd3747a35a;p=thirdparty%2Fvim.git patch 9.2.0212: MS-Windows: version packing may overflow Problem: MS-Windows: version packing may overflow (after v9.2.0206) Solution: Explicitly clamp the version components using min() (Mao-Yining). The version components (major, minor, build) from RtlGetVersion are now clamped to their maximum bit widths (8 bits, 8 bits, 15 bits) before being packed into a 32-bit integer. This prevents overflow when storing unexpectedly large values. This fixes a regression introduced in patch 9.2.0206 where the previous clamping logic was accidentally removed. The MAKE_VER macro is simplified by removing bit masks, as clamping is now done at the call site, making the macro clearer and reducing redundant masking. closes: #19769 Signed-off-by: Mao-Yining Signed-off-by: Christian Brabandt --- diff --git a/src/os_mswin.c b/src/os_mswin.c index 6c92428a0a..be71fac73f 100644 --- a/src/os_mswin.c +++ b/src/os_mswin.c @@ -127,9 +127,9 @@ win_version_init(void) osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW); pRtlGetVersion(&osver); - win_version = - MAKE_VER(osver.dwMajorVersion, osver.dwMinorVersion, - osver.dwBuildNumber); + win_version = MAKE_VER(min(osver.dwMajorVersion, 0xFF), + min(osver.dwMinorVersion, 0xFF), + min(osver.dwBuildNumber, 0xFFFF)); } /* diff --git a/src/os_win32.h b/src/os_win32.h index 6eaa951e7a..6f395eede7 100644 --- a/src/os_win32.h +++ b/src/os_win32.h @@ -227,4 +227,4 @@ Trace(char *pszFormat, ...); // Windows Version #define MAKE_VER(major, minor, build) \ - ((((major) & 0xFF) << 24) | (((minor) & 0xFF) << 16) | ((build) & 0x7FFF)) + (((major) << 24) | ((minor) << 16) | (build)) diff --git a/src/version.c b/src/version.c index f6eee54534..83c07847e0 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 212, /**/ 211, /**/