Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor: extract trimmedBase variable in netstandard2.0 path check
Agent-Logs-Url: https://github.com/demaconsulting/NuGetCaching/sessions/9aa9e288-a590-4fe3-b082-f3b1f9f4f335

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
  • Loading branch information
Copilot and Malcolmnixon authored Apr 3, 2026
commit 44ea4e54b81e7abeb8e473a35eab0acc394db827
9 changes: 3 additions & 6 deletions src/DemaConsulting.NuGet.Caching/PathHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,13 @@ internal static string SafePathCombine(string basePath, string relativePath)
#else
// On .NET Standard 2.0, Path.GetRelativePath is not available.
// Perform containment check using normalized path prefix matching.
var normalizedBase = absoluteBase.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
+ Path.DirectorySeparatorChar;
var trimmedBase = absoluteBase.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
var normalizedBase = trimmedBase + Path.DirectorySeparatorChar;
var pathComparison = Path.DirectorySeparatorChar == '\\'
? StringComparison.OrdinalIgnoreCase
: StringComparison.Ordinal;
if (!absoluteCombined.StartsWith(normalizedBase, pathComparison)
&& !string.Equals(
absoluteCombined,
normalizedBase.TrimEnd(Path.DirectorySeparatorChar),
pathComparison))
&& !string.Equals(absoluteCombined, trimmedBase, pathComparison))
{
throw new ArgumentException($"Invalid path component: {relativePath}", nameof(relativePath));
}
Expand Down