From 6f0092f8db8fb7fe8e4d020fda4dde81f5f3b2aa Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Tue, 17 Nov 2020 14:55:05 +0100
Subject: [PATCH] fix(nuget): normalize paths (#7745)

---
 lib/manager/nuget/extract.spec.ts | 3 +--
 lib/manager/nuget/util.ts         | 9 +++++++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/manager/nuget/extract.spec.ts b/lib/manager/nuget/extract.spec.ts
index 40cbeb814a..65809afa0b 100644
--- a/lib/manager/nuget/extract.spec.ts
+++ b/lib/manager/nuget/extract.spec.ts
@@ -1,5 +1,4 @@
 import { readFileSync } from 'fs';
-import path from 'path';
 import * as upath from 'upath';
 import { ExtractConfig } from '../common';
 import { extractPackageFile } from './extract';
@@ -9,7 +8,7 @@ describe('lib/manager/nuget/extract', () => {
     let config: ExtractConfig;
     beforeEach(() => {
       config = {
-        localDir: path.resolve('lib/manager/nuget/__fixtures__'),
+        localDir: upath.resolve('lib/manager/nuget/__fixtures__'),
       };
     });
     it('returns empty for invalid csproj', async () => {
diff --git a/lib/manager/nuget/util.ts b/lib/manager/nuget/util.ts
index 7508d6e7db..566de7e710 100644
--- a/lib/manager/nuget/util.ts
+++ b/lib/manager/nuget/util.ts
@@ -25,12 +25,17 @@ export async function determineRegistries(
 ): Promise<Registry[] | undefined> {
   // Valid file names taken from https://github.com/NuGet/NuGet.Client/blob/f64621487c0b454eda4b98af853bf4a528bef72a/src/NuGet.Core/NuGet.Configuration/Settings/Settings.cs#L34
   const nuGetConfigFileNames = ['nuget.config', 'NuGet.config', 'NuGet.Config'];
+  // normalize paths, otherwise startsWith can fail because of path delimitter mismatch
+  const baseDir = upath.normalizeSafe(localDir);
   const nuGetConfigPath = await findUp(nuGetConfigFileNames, {
-    cwd: upath.dirname(upath.join(localDir, packageFile)),
+    cwd: upath.dirname(upath.join(baseDir, packageFile)),
     type: 'file',
   });
 
-  if (nuGetConfigPath?.startsWith(localDir) !== true) {
+  if (
+    !nuGetConfigPath ||
+    upath.normalizeSafe(nuGetConfigPath).startsWith(baseDir) !== true
+  ) {
     return undefined;
   }
 
-- 
GitLab