view src/msvc-latest.bat @ 34309:d7cfd8fb1d75 v9.1.0089

patch 9.1.0089: qsort() comparison functions should be transitive Commit: https://github.com/vim/vim/commit/e06e43766500ecb4cd1031fa16cf9cbebdb222c1 Author: Christian Brabandt <cb@256bit.org> Date: Fri Feb 9 19:39:14 2024 +0100 patch 9.1.0089: qsort() comparison functions should be transitive Problem: qsort() comparison functions should be transitive Solution: Do not subtract values, but rather use explicit comparisons Improve qsort() comparison functions There has been a recent report on qsort() causing out-of-bounds read & write in glibc for non transitive comparison functions https://www.qualys.com/2024/01/30/qsort.txt Even so the bug is in glibc's implementation of the qsort() algorithm, it's bad style to just use substraction for the comparison functions, which may cause overflow issues and as hinted at in OpenBSD's manual page for qsort(): "It is almost always an error to use subtraction to compute the return value of the comparison function." So check the qsort() comparison functions and change them to be safe. closes: #13980 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Fri, 09 Feb 2024 19:45:06 +0100
parents 54dda39c5bb3
children
line wrap: on
line source

@echo off
rem To be used on MS-Windows for Visual C++ 2017 or later.
rem See INSTALLpc.txt for information.
rem
rem Usage:
rem   For x86 builds run this with "x86" option:
rem     msvc-latest x86
rem   For x64 builds run this with "x86_amd64" option or "x64" option:
rem     msvc-latest x86_amd64
rem     msvc-latest x64
rem
rem Optional environment variables:
rem   VSWHERE:
rem     Full path to vswhere.exe.
rem   VSVEROPT:
rem     Option to search specific version of Visual Studio.
rem     Default: -latest
rem     To search VS2017:
rem       set "VSVEROPT=-version [15.0^,16.0^)"
rem     To search VS2019:
rem       set "VSVEROPT=-version [16.0^,17.0^)"
rem     To search VS2022:
rem       set "VSVEROPT=-version [17.0^,18.0^)"

if "%VSWHERE%"=="" (
	set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
	set VSWHERE_SET=yes
)
if not exist "%VSWHERE%" (
	echo Error: vswhere not found.
	set VSWHERE=
	set VSWHERE_SET=
	exit /b 1
)

if "%VSVEROPT%"=="" (
	set VSVEROPT=-latest
	set VSVEROPT_SET=yes
)

rem Search Visual Studio Community, Professional or above.
for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" %VSVEROPT% -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
	set InstallDir=%%i
)
if exist "%InstallDir%\VC\Auxiliary\Build\vcvarsall.bat" (
	call "%InstallDir%\VC\Auxiliary\Build\vcvarsall.bat" %*
	goto done
)

rem Search Visual Studio 2017 Express.
rem (Visual Studio 2017 Express uses different component IDs.)
for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" %VSVEROPT% -products Microsoft.VisualStudio.Product.WDExpress -property installationPath`) do (
	set InstallDir=%%i
)
if exist "%InstallDir%\VC\Auxiliary\Build\vcvarsall.bat" (
	call "%InstallDir%\VC\Auxiliary\Build\vcvarsall.bat" %*
) else (
	echo Error: vcvarsall.bat not found.
	rem Set ERRORLEVEL to 1.
	call
)

:done
if "%VSWHERE_SET%"=="yes" (
	set VSWHERE=
	set VSWHERE_SET=
)
if "%VSVEROPT_SET%"=="yes" (
	set VSVEROPT=
	set VSVEROPT_SET=
)
set InstallDir=