
ะั ะฟัะพะดะพะปะถะฐะตะผ ะดะตะปะฐัั ะธัะฟะพะปัะทะพะฒะฐะฝะธะต PVS-Studio ัะดะพะฑะฝะตะต. ะขะตะฟะตัั ะฝะฐั ะฐะฝะฐะปะธะทะฐัะพั ะดะพัััะฟะตะฝ ะฒ Chocolatey, ะฟะฐะบะตัะฝะพะผ ะผะตะฝะตะดะถะตัะต ะดะปั Windows. ะั ะฟะพะปะฐะณะฐะตะผ, ััะพ ััะพ ะพะฑะปะตะณัะธั ัะฐะทะฒััััะฒะฐะฝะธะต PVS-Studio, ะฒ ัะฐััะฝะพััะธ, ะฒ ะพะฑะปะฐัะฝัั
ัะตัะฒะธัะฐั
. ะงัะพะฑั ะฝะต ะธะดัะธ ะดะฐะปะตะบะพ, ะฟัะพะฒะตัะธะผ ะธัั
ะพะดะฝัะน ะบะพะด ะฒัั ัะพะณะพ ะถะต Chocolatey. ะ ะบะฐัะตััะฒะต CI ัะธััะตะผั ะฒััััะฟะธั Azure DevOps.
แแฅ แแแชแแแฃแแแ แฉแแแแ แกแฎแแ แกแขแแขแแแแแก แกแแ แฆแ แฃแแแแแแ แแแขแแแ แแชแแแแ:
แแแ แฉแแแ, แงแฃแ แแแฆแแแ แแแแฅแชแแแ แแแ แแแ แกแขแแขแแแก Azure DevOps-แแแ แแแขแแแ แแชแแแก แจแแกแแฎแแ, แ แแแแแ แแ แจแแแแฎแแแแแจแ แแแแแแ แแ แแฃแแฅแขแ แแแแแขแแแแแฃแแแ แแฃแแแแ แแแแก แแแแแแแ แแกแแชแแแแแแแ.
แแกแ แ แแ, แแ แกแขแแขแแแก แแแแ แแแ:
โ ะธะฝััััะผะตะฝั ััะฐัะธัะตัะบะพะณะพ ะฐะฝะฐะปะธะทะฐ ะบะพะดะฐ, ะฟัะตะดะฝะฐะทะฝะฐัะตะฝะฝัะน ะดะปั ะฒััะฒะปะตะฝะธั ะพัะธะฑะพะบ ะธ ะฟะพัะตะฝัะธะฐะปัะฝัั ััะทะฒะธะผะพััะตะน ะฒ ะฟัะพะณัะฐะผะผะฐั , ะฝะฐะฟะธัะฐะฝะฝัั ะฝะฐ ัะทัะบะฐั ะก, C++, C# ะธ Java. ะ ะฐะฑะพัะฐะตั ะฒ 64-ะฑะธัะฝัั ัะธััะตะผะฐั ะฝะฐ Windows, Linux ะธ macOS, ะธ ะผะพะถะตั ะฐะฝะฐะปะธะทะธัะพะฒะฐัั ะบะพะด, ะฟัะตะดะฝะฐะทะฝะฐัะตะฝะฝัะน ะดะปั 32-ะฑะธัะฝัั , 64-ะฑะธัะฝัั ะธ ะฒัััะฐะธะฒะฐะตะผัั ARM ะฟะปะฐััะพัะผ. ะัะปะธ ะฒั ะฒะฟะตัะฒัะต ะฑัะดะตัะต ะฟัะพะฑะพะฒะฐัั ััะฐัะธัะตัะบะธะน ะฐะฝะฐะปะธะท ะบะพะดะฐ ะดะปั ะฟัะพะฒะตัะบะธ ัะฒะพะธั ะฟัะพะตะบัะพะฒ, ัะพ ัะตะบะพะผะตะฝะดัะตะผ ะพะทะฝะฐะบะพะผะธัััั ัะพ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แกแฌแ แแคแแ แแแฎแแ PVS-Studio-แก แงแแแแแแ แกแแแแขแแ แแกแ แแแคแ แแฎแแแแแแแ แแ แจแแแคแแกแแ แแ แแแกแขแ แฃแแแแขแแก แจแแกแแซแแแแแแแแแ.
โ แฆแ แฃแแแแแแแ แกแแ แแแกแแแแก แแแแ แแแ, แ แแแแแแช แแ แแแแแแแแ แแแแชแแแก แแแแ แจแแแฃแจแแแแแแก แแ แแชแแกแก. แแก แแแแขแคแแ แแ แแแแชแแแก แแกแแ แแแกแขแ แฃแแแแขแแแก, แ แแแแ แแชแแ Azure Pipelines, Azure Boards, Azure Artifacts, Azure Repos, Azure Test Plans, แ แแแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแฉแฅแแ แแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แจแแแฃแจแแแแแแก แแ แแชแแกแ แแ แแแแฃแแฏแแแแกแแ แแแกแ แฎแแ แแกแฎแ.
โ ะฟะฐะบะตัะฝัะน ะผะตะฝะตะดะถะตั ะดะปั Windows ั ะพัะบััััะผ ะธัั ะพะดะฝัะผ ะบะพะดะพะผ. ะฆะตะปั ะฟัะพะตะบัะฐ โ ะฐะฒัะพะผะฐัะธะทะธัะพะฒะฐัั ะฒะตัั ะถะธะทะฝะตะฝะฝัะน ัะธะบะป ะฟัะพะณัะฐะผะผะฝะพะณะพ ะพะฑะตัะฟะตัะตะฝะธั ะพั ัััะฐะฝะพะฒะบะธ ะดะพ ะพะฑะฝะพะฒะปะตะฝะธั ะธ ัะดะฐะปะตะฝะธั ะฒ ะพะฟะตัะฐัะธะพะฝะฝัั ัะธััะตะผะฐั Windows.
แจแแแแแแแแก แแแแแงแแแแแแก แจแแกแแฎแแ
แแแแแขแแแแก แแแแแฏแแ แแก แแแกแขแแแแชแแแก แฌแแกแแก แแแฎแแ แจแแแแซแแแแ แแฅ แแแแแแแแขแแ แแก แแแกแขแแแแชแแแก แกแ แฃแแ แแแแฃแแแแขแแชแแ แฎแแแแแกแแฌแแแแแแ แจแแแแแ แแแฃแแแ: แแแแงแแคแแแแแแจแ โแแแกแขแแแแชแแ Chocolatey-แแก แแแแแขแแแแก แแแแแฏแแ แแก แแแแแงแแแแแแโ. แแแแแแ แแแแแแแแ แแ แแฅแแแแ แ แแแแแแแแ แแฃแแฅแขแก.
แแแแแแแแขแแ แแก แฃแแฎแแแกแ แแแ แกแแแก แแแกแขแแแแชแแแก แแ แซแแแแแ:
choco install pvs-studioPVS-Studio แแแแแขแแก แแแแแ แแขแฃแแ แแแ แกแแแก แแแกแขแแแแชแแแก แแ แซแแแแแ:
choco install pvs-studio --version=7.05.35617.2075แแแแฃแแแกแฎแแแแแ, แแฎแแแแ แแแแแแแแขแแ แแก แแแ แแแแ แแแแแกแขแแแแ แแแฃแแ โ Core แแแแแแแแแขแ. แงแแแแ แกแฎแแ แแ แแจแแก (Standalone, JavaCore, IDEA, MSVS2010, MSVS2012, MSVS2013, MSVS2015, MSVS2017, MSVS2019) แแแแแชแแแ แจแแกแแซแแแแแแแ --package-แแแ แแแแขแ แแแแก แแแแแงแแแแแแ.
แแแแแแแแ แแ แซแแแแแ, แ แแแแแแช แแแแแแกแขแแแแ แแแก แแแแแแแแขแแ แก Visual Studio 2019-แแก แแแแแแแขแแ:
choco install pvs-studio --package-parameters="'/MSVS2019'"แแฎแแ แแแแแ แแแแแแฎแแแแ แแแแแแแแขแแ แแก แแแกแแฎแแ แฎแแแแแ แแแแแงแแแแแแก แแแแแแแแ Azure DevOps-แจแ.
แ แแแฃแแแ แแแ
แจแแแแฎแกแแแแแ, แ แแ แแ แกแแแแแก แชแแแแ แกแขแแขแแ แแกแแ แกแแแแแฎแแแแ, แ แแแแ แแชแแ แแแแแ แแจแแก แ แแแแกแขแ แแชแแ, Build Pipeline-แแก แจแแฅแแแ แแ แแแแแ แแจแแก แกแแแฅแ แแแแแแชแแ GitHub-แแก แกแแชแแแจแ แแแแแแแกแแแฃแ แแ แแแฅแขแแแ. แฉแแแแ แแแงแแแแแ แแแฃแงแแแแแแแแ แแแแฌแงแแแ แแแแคแแแฃแ แแชแแแก แคแแแแแก แฉแแฌแแ แแ.
แแแ แแแ แ แแแจแ, แแแแแ แแแแแงแแแแ แแแจแแแแแก แขแ แแแแ แ, แ แแแแแแช แแแฃแแแแแแก, แ แแ แแแจแแแแ แแฎแแแแ แชแแแแแแแแแแกแแแแก แแแฎแแแแ. แกแแแแแแกแขแ แ แคแแแแแแ:
trigger:
- masterะะฐะปะตะต ะฝะฐะผ ะฝัะถะฝะพ ะฒัะฑัะฐัั ะฒะธัััะฐะปัะฝัั ะผะฐัะธะฝั. ะะฐ ะดะฐะฝะฝัะน ะผะพะผะตะฝั ััะพ ะฑัะดะตั Microsoft-hosted ะฐะณะตะฝั ั Windows Server 2019 ะธ Visual Studio 2019:
pool:
vmImage: 'windows-latest'แแแแแ แแแแแแแแแ แแแแคแแแฃแ แแชแแแก แคแแแแแก แซแแ แแแแ แแแฌแแแแ (แแแแแ แแแแแฏแแแ). แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแแ แขแฃแแแฃแ แแแแฅแแแแจแ แแแแแแแแฃแ แ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแกแขแแแแชแแ แจแแฃแซแแแแแแแ, แแ Docker-แแก แแแแขแแแแแ แ แแ แแแแแแแขแแแแ. แฉแแแ แจแแแแแซแแแ Chocolatey แแแแแแแขแแ, แ แแแแ แช แแแคแแ แแแแแ Azure DevOps-แแกแแแแก. แแแแกแแแแแก แแแแแแแ แแแแฌแแแแฃแแแ แฒแแฆแ แฃแคแแกแแแจแแแแแ, แแฃ แฃแแแ แแแขแแ แแแแแฃแแ แฎแแ แ, แฃแแ แแแแ แแแ แฉแแแ แแฅแแแแ แแแแแ แแจแ แแ แแฃ แแ แ, แแแแแ แแแแแแแแ แแแขแแ แแแแชแแแก แจแแแแแ.

แแฅ แแฅแแแ แฃแแแ แแแ แฉแแแ, แกแแ แแแแแแแขแแแ แแแคแแ แแแแแแก แแ แแแแญแแ แแ แฆแแแแแก แแแกแขแแแแชแแ.

แฌแแ แแแขแแแฃแแ แแแกแขแแแแชแแแก แจแแแแแ, แแแแฌแแแแฃแแแ แแ แแแแแแแชแแแแ แแแแแกแแแ:

แแฎแแ แคแแแฏแแ แแจแ แจแแแแซแแแแ แแแฎแแ Chocolatey แแแแแแแแแก แจแแแแแแ. แแแแชแแแแแ แแแแคแแแฃแ แแชแแแก แคแแแแแก แ แแแแฅแขแแ แแแแกแแก azure-pipelines.yml:

แแแแแ แแแแแฌแแแแฃแแแ Chocolatey-แแ แแ แแแแฎแแ แแแแแแแก แกแแ:

แแฅ แฉแแแ แฃแแแ แแแแ แฉแแแ แแแกแขแแแแชแแ แแแแจแ แแ แซแแแแแแแ. แจแแแแแ Nuspec แคแแแแแก แกแแฎแแแ แฉแแแ แแแแฃแแแแแแ แกแแญแแ แ แแแแแขแแก แกแแฎแแแก โ pvs-studio. แแฃ แแ แแแฃแแแแแแ แแแ แกแแแก, แแแแแกแขแแแแ แแแแ แฃแแฎแแแกแ, แ แแแแแแช แกแ แฃแแแ แแแแฌแงแแแก. แแแแญแแ แแ แฆแแแแแก แแแแแแแขแแแ แแ แแแแแ แแ แแแฃแ แแแแแแแแแก แแแแคแแแฃแ แแชแแแก แคแแแแจแ แแแแฎแแแ.
steps:
- task: ChocolateyCommand@0
inputs:
command: 'install'
installPackageId: 'pvs-studio'แจแแแแแ, แแแแแแแแแ แฉแแแแ แคแแแแแก แแแแแแ แแแฌแแแแ:
- task: CmdLine@2
inputs:
script: แแฎแแ แฉแแแ แฃแแแ แจแแแฅแแแแ แคแแแแ แแแแแแแแขแแ แแก แแแชแแแแแแ. แแฅ แแแ แแแ แกแแฎแแแ ะธ PVSKEY โ แชแแแแแแแแก แกแแฎแแแแแ, แ แแแแแแ แแแแจแแแแแแแแแกแแช แแแ แแแแขแ แแแจแ แแแคแแฅแกแแ แแแ. แแกแแแ แจแแแแแฎแแแแ PVS-Studio-แก แจแแกแแแแกแ แแ แแแชแแแแแแก แแแกแแฆแแแก. แแแแ แแแแจแแแแแแแแแแก แแแกแแงแแแแแแแ, แแแฎแกแแแแ แแแแแฃ แชแแแแแแแ -> แแฎแแแ แชแแแแแแแแแแ แจแแแฅแแแแ แชแแแแแแแ แแแ แแแ แกแแฎแแแ แจแแกแแแแกแแแแก แแ PVSKEY แแแแแแแแขแแ แแก แแแกแแฆแแแแกแแแแก. แแ แแแแแแแฌแงแแแ แแแแแก แแแแแจแแแ แจแแแแแฎแแ แแก แฆแแ แแแฃแแแแ แกแแแแฃแแแแ แแแแกแแแแก PVSKEYแแ แซแแแแแแก แแแแ:
ัall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" credentials
โu $(PVSNAME) โn $(PVSKEY)แแแแแ, แจแแแฅแแแแ แแ แแแฅแขแ แ แแแแแแขแแ แจแ แแแแแแแกแแแฃแแ bat แคแแแแแก แแแแแงแแแแแแ:
ัall build.batแแแแแ แจแแแฅแแแแ แกแแฅแแฆแแแแ, แกแแแแช แแแแแแแแขแแ แแก แจแแแแแแแแก แแฅแแแ แคแแแแแแ แจแแแแแฎแแแ:
ัall mkdir PVSTestResultsแแแแแ, แฉแแแแขแแ แแ แแ แแแฅแขแแก แแแแแแแ:
ัall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe"
โt .srcchocolatey.sln โo .PVSTestResultsChoco.plog แฉแแแ แฉแแแแก แแแแแ แแจแก HTML แคแแ แแแขแจแ แแแฅแชแแแ Plogะกonverter-แแก แฃแขแแแแขแแก แแแแแงแแแแแแ:
ัall "C:Program Files (x86)PVS-StudioPlogConverter.exe"
โt html โo PVSTestResults .PVSTestResultsChoco.plogแแฎแแ แแฅแแแ แฃแแแ แจแแฅแแแแ แแแแแแแแ, แ แแแ แแแแแ แแจแ แแขแแแ แแแ.
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: PVSTestResults
artifactName: PVSTestResults
condition: always()แกแ แฃแแ แแแแคแแแฃแ แแชแแแก แคแแแแ แแกแ แแแแแแงแฃแ แแแ:
trigger:
- master
pool:
vmImage: 'windows-latest'
steps:
- task: ChocolateyCommand@0
inputs:
command: 'install'
installPackageId: 'pvs-studio'
- task: CmdLine@2
inputs:
script: |
call "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe"
credentials โu $(PVSNAME) โn $(PVSKEY)
call build.bat
call mkdir PVSTestResults
call "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe"
โt .srcchocolatey.sln โo .PVSTestResultsChoco.plog
call "C:Program Files (x86)PVS-StudioPlogConverter.exe"
โt html โo .PVSTestResults .PVSTestResultsChoco.plog
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: PVSTestResults
artifactName: PVSTestResults
condition: always()แแแแแ แแแแแญแแ แแ แจแแแแฎแแ->แจแแแแฎแแ->แแแจแแแแ แแแแแแแแแก แจแแกแแกแ แฃแแแแแแ. แแแแแแฌแแ แแ แแแแแ แแจแ แแแแแแแแแก แฉแแแแ แแแ แแแแแกแแแแ.
Chocolatey แแ แแแฅแขแ แแฎแแแแ 37615 แกแขแ แแฅแแ C# แแแแก แจแแแชแแแก. แแแแแ แแแแแแฎแแแแ แแฆแแแฉแแแแแ แจแแชแแแแแแ.
แขแแกแขแแก แจแแแแแแแ
แแแคแ แแฎแแแแแ N1
แแแแแแแแขแแ แแก แแแคแ แแฎแแแแแ: โProviderโ แชแแแแแ แแแแแญแแแฃแแแ แกแแแฃแแแ แแแแก. CrytpoHashProviderSpecs.cs 38
public abstract class CrytpoHashProviderSpecsBase : TinySpec
{
....
protected CryptoHashProvider Provider;
....
public override void Context()
{
Provider = Provider = new CryptoHashProvider(FileSystem.Object);
}
}แแแแแแแแขแแ แแ แแฆแแแแฉแแแ แชแแแแแแก แกแแแฃแแแ แแแแแ แแแแแญแแแ, แ แแช แแแ แก แแแแแแแฃแแแ. แกแแแแ แแฃแแแ, แแ แชแแแแแแแแแแ แแ แ-แแ แแแก แแแชแแแแ แกแฎแแ แชแแแแแ แฃแแแ แแงแแก. แแ แแก แจแแชแแแแแ แแ แแแแแขแแแแแ แแแแแญแแแ แฃแแ แแแแ แจแแแซแแแแ แฌแแแจแแแแก.
แแแคแ แแฎแแแแแ N2
แแแแแแแแขแแ แแก แแแคแ แแฎแแแแแ: [CWE-480] '&' แแแแ แแขแแ แ แแ แแแ แแแแ แแแแก แแคแแกแแแก. แจแแกแแซแแแ, แแแก แแแชแแแแ แแแแแงแแแแแฃแแ แแฅแแแก แแแแแ แฉแแ แแแแก '&&' แแแแ แแขแแ แ. Platform.cs 64
public static PlatformType get_platform()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.MacOSX:
{
....
}
case PlatformID.Unix:
if(file_system.directory_exists("/Applications")
& file_system.directory_exists("/System")
& file_system.directory_exists("/Users")
& file_system.directory_exists("/Volumes"))
{
return PlatformType.Mac;
}
else
return PlatformType.Linux;
default:
return PlatformType.Windows;
}
}แแแแ แแขแแ แแก แแแแกแฎแแแแแแ & แแแแ แแขแแ แแกแแแ && แแ แแก แแก, แ แแ แแฃ แแแแแแฅแแแก แแแ แชแฎแแแ แแฎแแ แ แแ แแก แงแแแแ, แแแจแแ แแแ แฏแแแแ แแฎแแ แ แแแแแช แแแแแแแแแแแ, แ แแช แแ แจแแแแฎแแแแแจแ แแแแแขแแแแ แแแแแแแก แแแแแซแแฎแแแแก แแฃแแแกแฎแแแแก. system.directory_exists.
แแแแฎแแแฃแ แคแ แแแแแแขแจแ แแก แแชแแ แ แฎแแ แแแแแ. แแแแฎ, แแ แแแ แแแแก แแแขแแแแแแชแแ แจแแกแแซแแแแแแแ & แแแแ แแขแแ แแก && แแแแ แแขแแ แแ แฉแแแแชแแแแแแ, แแแแ แแ แแ แแฅแขแแแฃแแ แแแแแกแแแ แแกแแ, แแก แแ แแคแแ แแ แแแแแแแแก แแ แแฎแแแแก. แแฃแแชแ, แกแฎแแ แจแแแแฎแแแแแแจแ, & แแ &&-แก แจแแ แแก แแฆแ แแแแ แจแแแซแแแแ แกแแ แแแแฃแแ แแ แแแแแแแแ แแแแแแฌแแแแก, แ แแแแกแแช แแแแแกแแฎแฃแแแแแก แแแ แฏแแแแ แแฎแแ แ แแ แแกแฌแแ แ/แแ แแกแฌแแ แ แแแแจแแแแแแแแแแ แแแฃแจแแแแแก. แแแแแแแแแ, แฉแแแแก แจแแชแแแแแแแก แแแแแฅแชแแแจแ, , แแกแแแ แจแแแแฎแแแแแช แแ แกแแแแแก:
if ((k < nct) & (s[k] != 0.0))แแแจแแแแช แแ, แแฃ แแแแแฅแกแ k แแ แแกแฌแแ แแ, แแก แแแแแงแแแแแฃแแ แแฅแแแแ แแแกแแแแก แแแแแแแขแแ แฌแแแแแแกแแแแก. แแก แแแแแแฌแแแแก แแแแแแแแแแกแแก แฌแแ แแแฅแแแแก. IndexOutOfRangeException.
แแแคแ แแฎแแแแแแแ N3, N4
แแแแแแแแขแแ แแก แแแคแ แแฎแแแแแ: [CWE-571] แแแแแกแแฎแฃแแแแ โshortPromptโ แงแแแแแแแแก แแแ แแแแแ. InteractivePrompt.cs 101
แแแแแแแแขแแ แแก แแแคแ แแฎแแแแแ: [CWE-571] แแแแแกแแฎแฃแแแแ โshortPromptโ แงแแแแแแแแก แแแ แแแแแ. InteractivePrompt.cs 105
public static string
prompt_for_confirmation(.... bool shortPrompt = false, ....)
{
....
if (shortPrompt)
{
var choicePrompt = choice.is_equal_to(defaultChoice) //1
?
shortPrompt //2
?
"[[{0}]{1}]".format_with(choice.Substring(0, 1).ToUpperInvariant(), //3
choice.Substring(1,choice.Length - 1))
:
"[{0}]".format_with(choice.ToUpperInvariant()) //0
:
shortPrompt //4
?
"[{0}]{1}".format_with(choice.Substring(0,1).ToUpperInvariant(), //5
choice.Substring(1,choice.Length - 1))
:
choice; //0
....
}
....
}แแ แจแแแแฎแแแแแจแ, แแ แกแแแแแก แกแแแแแฌแแแแแแ แแแแ แแขแแ แแก แฃแชแแแฃแ แ แแแแแแ. แแแแแ, แฃแคแ แ แแฎแแแก แแแแแแฎแแแแ: แแฃ แแแ แแแ, แ แแแแแแช 1-แแ แแแแแแจแแ, แแแแแแงแแคแแแแแฃแแแ, แแแจแแ แแแแแแแแ แแแ แแแ 2-แแ, แ แแแแแแช แงแแแแแแแแก แแ แแก แแแ แแแแแ, แ แแช แแแจแแแแก, แ แแ แจแแกแ แฃแแแแแ แแ-3 แฎแแแ. แแฃ แแแ แแแ 1 แแชแแแ แ แแฆแแแฉแแแแแ, แแแจแแ แแแแแแแแ แแ-4 แแแแ แแ แแแแแจแแฃแ แฎแแแแ, แ แแแแแจแแช แแก แแแ แแแ แแกแแแ แงแแแแแแแแก แแ แแก แแแ แแแแแ, แ แแช แแแจแแแแก, แ แแ แจแแกแ แฃแแแแแ แแ-5 แฎแแแ. แแแ แแแแ, 0 แแแแแแขแแ แแ แแแแแจแแฃแแ แแแ แแแแแ แแ แแกแแ แแก แจแแกแ แฃแแแแแ, แ แแช แจแแกแแซแแแ แแ แจแแแกแแแแแแแแแแก แแ แแแ แแแแกแขแแก แแแแ แแแแแแแแก.
แแแคแ แแฎแแแแแ N5
แแแแแแแแขแแ แแก แแแคแ แแฎแแแแแ: [CWE-783] แจแแกแแซแแแ, แแแแ แแขแแ แ โ?:โ แกแฎแแแแแแ แแ แแฃแจแแแแก, แแแแ แ แแแกแแแแแแแแ แแงแ. แแแกแ แแ แแแ แแขแแขแ แฃแคแ แ แแแแแแแ, แแแแ แ แกแฎแแ แแแแ แแขแแ แแแแก แแ แแแ แแขแแขแ แแแก แแแแแแแ แแแแแจแ. Options.cs 1019
private static string GetArgumentName (...., string description)
{
string[] nameStart;
if (maxIndex == 1)
{
nameStart = new string[]{"{0:", "{"};
}
else
{
nameStart = new string[]{"{" + index + ":"};
}
for (int i = 0; i < nameStart.Length; ++i)
{
int start, j = 0;
do
{
start = description.IndexOf (nameStart [i], j);
}
while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false);
....
return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1);
}
}แแแแแแแกแขแแแ แฎแแแแ แแฃแจแแแแแ:
while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false)แ แแแแแ แชแแแแแ j แ แแแแแแแแ แกแขแ แแฅแแแ แแแแแ แแฃแแแก แแแแชแแแแแแแชแแแกแแก, แกแแแแแแ แแแแ แแขแแ แ แแแแแ แฃแแแแก แแแแจแแแแแแแแก แงแแแแแแ แแแ แแแแก แแแแ, แชแแแแแก แกแฎแแฃแแ แแฎแแแแ แแ แแฎแแ แจแแกแ แฃแแแแแ. แแแฉแแแแแแ, แ แแ แแแแแก แแก แแแฌแแแ แแกแ แแ แแฃแจแแแแก, แ แแแแ แช แแ แแแ แแแแกแขแก แฐแฅแแแแ แแแแแ แแฎแฃแแ.
แแแคแ แแฎแแแแแ N6
แแแแแแแแขแแ แแก แแแคแ แแฎแแแแแ: [CWE-571] แแแแแกแแฎแฃแแแแ 'installedPackageVersions.Count != 1' แงแแแแแแแแก แแแ แแแแแ. NugetService.cs 1405
private void remove_nuget_cache_for_package(....)
{
if (!config.AllVersions && installedPackageVersions.Count > 1)
{
const string allVersionsChoice = "All versions";
if (installedPackageVersions.Count != 1)
{
choices.Add(allVersionsChoice);
}
....
}
....
}แแฅ แฃแชแแแฃแ แ แฉแแแแแฃแแ แแแ แแแแ: installedPackageVersions.Count != 1, แ แแแแแแช แงแแแแแแแแก แแฅแแแแ แแแ แแแแแแฎแจแแ แแ แแกแแแ แแแคแ แแฎแแแแแ แแแแจแ แแแแแแฃแ แจแแชแแแแแแ แแแฃแแแแแแก, แกแฎแแ แจแแแแฎแแแแแแจแ แแ แฃแแ แแแแ แแแแแแข แจแแแแฌแแแแแแ.
แแแคแ แแฎแแแแแ N7
แแแแแแแแขแแ แแก แแแคแ แแฎแแแแแ: แแแแ แแขแแ แแก โ||โ แแแ แชแฎแแแ แแ แแแ แฏแแแแ แแ แแก แแแแแขแฃแ แ แฅแแแแแแแกแแฎแฃแแแแแแ โcommandArguments.contains("-apikey")โ. ArgumentsUtility.cs 42
public static bool arguments_contain_sensitive_information(string
commandArguments)
{
return commandArguments.contains("-install-arguments-sensitive")
|| commandArguments.contains("-package-parameters-sensitive")
|| commandArguments.contains("apikey ")
|| commandArguments.contains("config ")
|| commandArguments.contains("push ")
|| commandArguments.contains("-p ")
|| commandArguments.contains("-p=")
|| commandArguments.contains("-password")
|| commandArguments.contains("-cp ")
|| commandArguments.contains("-cp=")
|| commandArguments.contains("-certpassword")
|| commandArguments.contains("-k ")
|| commandArguments.contains("-k=")
|| commandArguments.contains("-key ")
|| commandArguments.contains("-key=")
|| commandArguments.contains("-apikey")
|| commandArguments.contains("-api-key")
|| commandArguments.contains("-apikey")
|| commandArguments.contains("-api-key");
}แแ แแแ แแแแกแขแแ, แ แแแแแแแช แแแแแก แแก แแแฌแแแ แแแฌแแ แ, แแแแ แแ แ แกแขแ แแฅแแแ แแแแแแแแ แ แแ แแแแ แ แแแแฅแขแแ แแแ แแแแแแฌแงแแ. แแแแก แแแแ, Chocolatey-แแก แแแแฎแแแ แแแแแแก แแแ แแแแขแ แแก แแแแแงแแแแแ แแ แจแแแซแแแ. แแแแแ แแแแแ แ แแแแแแแแ แแแ. แแแแแ แแแชแแแฃแแ แแแ แแแแขแ แแแแก แแกแแแแกแแ, แจแแแแซแแแ แจแแแแแแแแแแแ แจแแแแแแ แแแ แแแแขแแแ:
commandArguments.contains("-apikey=");
commandArguments.contains("-api-key=");แแแแแ แแแ-แฉแแกแแแก แจแแชแแแแแแแก แแแแ แแแแแแแแแ, แแแ แ แแฃ แแแแแ, แแแแแแแแแแก แแแฆแแแ แแแแแแแแ แแ แกแแแแแก แแแแแกแแแแ แแ แแแฅแขแจแ, แ แแแแแกแแช แแแแ แ แแแแแแแแแ แกแแฌแงแแกแ แแแแ แแฅแแก แแ แแแแแแ แแ แซแแแแก แแ แ-แแ แแ แกแแฃแแแแแกแ แกแแจแฃแแแแแ แกแขแแขแแแฃแ แ แแแแแแแแ.
P.S. แแ แ แแแแ แช แงแแแแแแแแก, แแก แจแแชแแแแ, แ แแแแ แช แฌแแกแ, แแ แแแแแกแขแ แแฅแแแแแแ แแแ แแแแก แแแแแก แฉแแแแแ :). แแฎแแแแ แแฃแแแแแแชแแ "".
แแแคแ แแฎแแแแแ N8
แแแแแแแแขแแ แแก แแแคแ แแฎแแแแแ: [CWE-476] แแแแแฅแขแ โinstalledPackageโ แแแแแงแแแแแฃแแ แแงแ null-แแแ แแแ แแคแแแแชแแแแแ. แจแแแแฌแแแแแก แฎแแแแแ: 910, 917. NugetService.cs 910
public virtual ConcurrentDictionary<string, PackageResult> get_outdated(....)
{
....
var pinnedPackageResult = outdatedPackages.GetOrAdd(
packageName,
new PackageResult(installedPackage,
_fileSystem.combine_paths(
ApplicationParameters.PackagesLocation,
installedPackage.Id)));
....
if ( installedPackage != null
&& !string.IsNullOrWhiteSpace(installedPackage.Version.SpecialVersion)
&& !config.UpgradeCommand.ExcludePrerelease)
{
....
}
....
}แแแแกแแแฃแ แ แจแแชแแแแ: แแแแแฅแขแ แแแ แแแ แ แแแจแ แแแแแกแขแแแแ แแแฃแแ แแแแแขแ แแแแแแงแแแแแ แแ แจแแแแแ แจแแแแฌแแแแฃแแแ nullแแก แแแแแแแกแขแแแ แแ แแแ แแแแจแ แแ แกแแแฃแแ แแ แ แแ แแแแแแแแแ แแ แ-แแ แแแก แจแแกแแฎแแ แแแแฃแแแแแ: แแ แแแแแกแขแแแแ แแแฃแแ แแแแแขแ แแ แแกแแ แแก แแแแแแแ แ null, แ แแช แกแแแญแแแ แแ แจแแแแแ แจแแแแฌแแแแ แแแแแแขแแ, แแ แจแแกแแซแแแ แแแแจแ แกแแ แแแแฃแแ แจแแชแแแแ แแแแแฆแแ - แฌแแแแแแก แแชแแแแแแ แแฃแแแแแแ แแแแแแแแแ.
แแแกแแแแ
แแกแ แ แแ, แฉแแแ แแแแแ แแ แแ แแแขแแ แ แแแแแฏแ แแแแแแแแแ - แแฎแแ PVS-Studio-แก แแแแแงแแแแแ แแแแแ แฃแคแ แ แแแ แขแแแ แแ แแแกแแฎแแ แฎแแแแแ แแแฎแแ. แแกแแแ แแแแแ แแแฅแแ, แ แแ Chocolatey แแแ แแ แแแแแขแแแแก แแแแแฏแแ แแ แแแแจแ แจแแชแแแแแแแก แแชแแ แ แ แแแแแแแแแ, แ แแช แแแแแ แฃแคแ แ แแแแแแแ แแฅแแแแแแ PVS-Studio-แก แแแแแงแแแแแแก แจแแแแฎแแแแแจแ.
แแแแแขแแแแแแ แแ แกแชแแแแ PVS-Studio. แกแขแแขแแแฃแ แ แแแแแแแแขแแ แแก แ แแแฃแแแ แฃแแ แแแแแงแแแแแ แแแแฃแแฏแแแแกแแแก แแฅแแแแ แแฃแแแแก แแแแ แจแแแฃแจแแแแแฃแแ แแแแแก แฎแแ แแกแฎแกแ แแ แกแแแแแแแแก แแ แฎแแแก แจแแฃแฌแงแแแก แแ แแแแแ แแ แแแแแแแก แแแแแแแ แแชแแแแแแก. .
PS
แแแแแฅแแแงแแแแแแแ แกแขแแขแแ Chocolatey-แแก แแแแแแแแแ แแแก แแแแฃแแแแแแแ แแ แแแแแช แแแ แแแ แแแแฆแแก. แแ แแขแแแฃแแ แแแ แแคแแ แ แแแแแแแ, แแฃแแชแ, แแแแแแแแแ, โapi-keyโ-แแแ แแแแแแจแแ แแแฃแแ แจแแชแแแแ แแแแฌแแแแ.
แแฃ แแกแฃแ แ แแแฃแแแแ แแ แแก แกแขแแขแแ แแแแแแกแฃแ แแแแแแ แแฃแแแขแแ แแแก, แแแฎแแแ, แแแแแแงแแแแ แแแ แแแแแแก แแแฃแแ: แแแแแแกแแแ แกแขแแแแแ แแแ. .
แฌแงแแ แ: www.habr.com
