Skip to content

Commit 0257ba2

Browse files
committed
Fix #179
Possible Index Outside bounds of array when more than 128 packages are scanned
1 parent 88a80c0 commit 0257ba2

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

Src/NuGetDefense.Lib/NuGetDefense.Lib.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<Description>NuGetDefense ~ Check for Known Vulnerabilities at Build</Description>
2424
<PackageDescription>NuGetDefense was inspired by [OWASP SafeNuGet](https://nuget.org/packages/SafeNuGet/) but aims to check with multiple sources for known vulnerabilities.</PackageDescription>
2525
<Copyright>Curtis Carter 2023</Copyright>
26-
<Version>4.0.2.0</Version>
26+
<Version>4.0.4.0</Version>
2727
<RepositoryType>git</RepositoryType>
2828
<PackageReadmeFile>README.md</PackageReadmeFile>
2929
</PropertyGroup>

Src/NuGetDefense.Lib/Scanner.cs

+9-7
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace NuGetDefense;
2222

2323
public class Scanner
2424
{
25-
public const string Version = "4.0.2.0";
25+
public const string Version = "4.0.4.0";
2626
public const string UserAgentString = @$"NuGetDefense/{Version}";
2727
public const string DefaultSettingsFileName = "NuGetDefense.json";
2828
public const string DefaultVulnerabilityDataFileName = "VulnerabilityData.bin";
@@ -196,12 +196,13 @@ private void ScanVulnerabilities(ScanOptions options)
196196
var modUncached = uncachedPkgs.Count % 128;
197197
if (modUncached > 0 && cachedPackages.Length > 0)
198198
{
199-
for (var i = cachedPackages.Length - 1; i >= cachedPackages.Length - modUncached; i--)
199+
var rescanCount = Math.Min(128 - modUncached, cachedPackages.Length);
200+
for (var i = cachedPackages.Length - 1; i >= 0; i--)
200201
{
201202
uncachedPkgs.Add(cachedPackages[i]);
202203
}
203-
204-
cachedPackages = cachedPackages[..^modUncached];
204+
205+
cachedPackages = cachedPackages[..^rescanCount];
205206
}
206207
// Round out the calls to have a full set of packages each to refresh oldest cached packages
207208
if (uncachedPkgs.Count > 0) uncachedPkgs.AddRange(cachedPackages.Take(uncachedPkgs.Count % 128));
@@ -236,12 +237,13 @@ private void ScanVulnerabilities(ScanOptions options)
236237
var modUncached = uncachedPkgs.Count % 128;
237238
if (modUncached > 0 && cachedPackages.Length > 0)
238239
{
239-
for (var i = cachedPackages.Length - 1; i >= cachedPackages.Length - modUncached; i--)
240+
var rescanCount = Math.Min(128 - modUncached, cachedPackages.Length);
241+
for (var i = cachedPackages.Length - 1; i >= 0; i--)
240242
{
241243
uncachedPkgs.Add(cachedPackages[i]);
242244
}
243-
244-
cachedPackages = cachedPackages[..^modUncached];
245+
246+
cachedPackages = cachedPackages[..^rescanCount];
245247
}
246248
Log.Logger.Verbose("Checking the GitHub Security Advisory Database for Vulnerabilities");
247249
var ghsaVulnDict =

Src/NuGetDefense/NuGetDefense.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
<IncludeSymbols>true</IncludeSymbols>
2222
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
2323
<Nullable>enable</Nullable>
24-
<AssemblyVersion>4.0.2.0</AssemblyVersion>
25-
<FileVersion>4.0.2.0</FileVersion>
24+
<AssemblyVersion>4.0.4.0</AssemblyVersion>
25+
<FileVersion>4.0.4.0</FileVersion>
2626
<PackageIcon>icon.png</PackageIcon>
2727
</PropertyGroup>
2828
<PropertyGroup Condition="'$(Configuration)'=='Release'">
@@ -37,7 +37,7 @@
3737
<PackageId>NuGetDefense.Tool</PackageId>
3838
<PackAsTool>true</PackAsTool>
3939
<ToolCommandName>nugetdefense</ToolCommandName>
40-
<Version>4.0.2.0</Version>
40+
<Version>4.0.4.0</Version>
4141
<PackageReadmeFile>README.md</PackageReadmeFile>
4242
</PropertyGroup>
4343
<ItemGroup>

Src/NuGetDefense/NuGetDefense.nuspec

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<metadata>
44
<id>NuGetDefense</id>
55
<title>NuGetDefense</title>
6-
<version>4.0.2.0</version>
6+
<version>4.0.4.0</version>
77
<authors>Curtis Carter</authors>
88
<owners>Curtis Carter</owners>
99
<projectUrl>https://digitalcoyote.github.io/NuGetDefense/</projectUrl>
@@ -12,7 +12,7 @@
1212
<description>
1313
vulnerabilities.
1414
</description>
15-
<releaseNotes>https://github.com/digitalcoyote/NuGetDefense/releases/tag/v4.0.2.0</releaseNotes>
15+
<releaseNotes>https://github.com/digitalcoyote/NuGetDefense/releases/tag/v4.0.4.0</releaseNotes>
1616
<repository type="git" url="https://github.com/digitalcoyote/NuGetDefense.git"/>
1717
<license type="expression">MIT</license>
1818
<icon>images\icon.png</icon>

0 commit comments

Comments
 (0)