New: Improve path validation when handling paths from different OSes

(cherry picked from commit 0321368cc392d7a0a488409bf6bd586ba45497af)

Closes #3466
pull/3610/head
Mark McDowall 1 year ago committed by Bogdan
parent 24056fd052
commit d0f75e2e96

@ -1,4 +1,5 @@
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnsureThat; using NzbDrone.Common.EnsureThat;
using NzbDrone.Test.Common; using NzbDrone.Test.Common;
@ -12,14 +13,14 @@ namespace NzbDrone.Common.Test.EnsureTest
public void EnsureWindowsPath(string path) public void EnsureWindowsPath(string path)
{ {
WindowsOnly(); WindowsOnly();
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
} }
[TestCase(@"/var/user/file with, comma.mp3")] [TestCase(@"/var/user/file with, comma.mp3")]
public void EnsureLinuxPath(string path) public void EnsureLinuxPath(string path)
{ {
PosixOnly(); PosixOnly();
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
} }
} }
} }

@ -35,6 +35,7 @@ namespace NzbDrone.Common.Test
[TestCase(@"\\Testserver\Test\file.ext", @"\\Testserver\Test\file.ext")] [TestCase(@"\\Testserver\Test\file.ext", @"\\Testserver\Test\file.ext")]
[TestCase(@"\\Testserver\Test\file.ext\\", @"\\Testserver\Test\file.ext")] [TestCase(@"\\Testserver\Test\file.ext\\", @"\\Testserver\Test\file.ext")]
[TestCase(@"\\Testserver\Test\file.ext \\", @"\\Testserver\Test\file.ext")] [TestCase(@"\\Testserver\Test\file.ext \\", @"\\Testserver\Test\file.ext")]
[TestCase(@"//CAPITAL//lower// ", @"\\CAPITAL\lower")]
public void Clean_Path_Windows(string dirty, string clean) public void Clean_Path_Windows(string dirty, string clean)
{ {
WindowsOnly(); WindowsOnly();

@ -72,7 +72,7 @@ namespace NzbDrone.Common.Disk
private void CheckFolderExists(string path) private void CheckFolderExists(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
if (!FolderExists(path)) if (!FolderExists(path))
{ {
@ -82,7 +82,7 @@ namespace NzbDrone.Common.Disk
private void CheckFileExists(string path) private void CheckFileExists(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
if (!FileExists(path)) if (!FileExists(path))
{ {
@ -100,19 +100,19 @@ namespace NzbDrone.Common.Disk
public bool FolderExists(string path) public bool FolderExists(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return _fileSystem.Directory.Exists(path); return _fileSystem.Directory.Exists(path);
} }
public bool FileExists(string path) public bool FileExists(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return FileExists(path, PathStringComparison); return FileExists(path, PathStringComparison);
} }
public bool FileExists(string path, StringComparison stringComparison) public bool FileExists(string path, StringComparison stringComparison)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
switch (stringComparison) switch (stringComparison)
{ {
@ -132,7 +132,7 @@ namespace NzbDrone.Common.Disk
public bool FolderWritable(string path) public bool FolderWritable(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
try try
{ {
@ -151,42 +151,42 @@ namespace NzbDrone.Common.Disk
public bool FolderEmpty(string path) public bool FolderEmpty(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return _fileSystem.Directory.EnumerateFileSystemEntries(path).Empty(); return _fileSystem.Directory.EnumerateFileSystemEntries(path).Empty();
} }
public string[] GetDirectories(string path) public string[] GetDirectories(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return _fileSystem.Directory.GetDirectories(path); return _fileSystem.Directory.GetDirectories(path);
} }
public string[] GetDirectories(string path, SearchOption searchOption) public string[] GetDirectories(string path, SearchOption searchOption)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return _fileSystem.Directory.GetDirectories(path, "*", searchOption); return _fileSystem.Directory.GetDirectories(path, "*", searchOption);
} }
public string[] GetFiles(string path, SearchOption searchOption) public string[] GetFiles(string path, SearchOption searchOption)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return _fileSystem.Directory.GetFiles(path, "*.*", searchOption); return _fileSystem.Directory.GetFiles(path, "*.*", searchOption);
} }
public long GetFolderSize(string path) public long GetFolderSize(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return GetFiles(path, SearchOption.AllDirectories).Sum(e => _fileSystem.FileInfo.FromFileName(e).Length); return GetFiles(path, SearchOption.AllDirectories).Sum(e => _fileSystem.FileInfo.FromFileName(e).Length);
} }
public long GetFileSize(string path) public long GetFileSize(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
if (!FileExists(path)) if (!FileExists(path))
{ {
@ -199,13 +199,13 @@ namespace NzbDrone.Common.Disk
public void CreateFolder(string path) public void CreateFolder(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
_fileSystem.Directory.CreateDirectory(path); _fileSystem.Directory.CreateDirectory(path);
} }
public void DeleteFile(string path) public void DeleteFile(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
Logger.Trace("Deleting file: {0}", path); Logger.Trace("Deleting file: {0}", path);
RemoveReadOnly(path); RemoveReadOnly(path);
@ -215,8 +215,8 @@ namespace NzbDrone.Common.Disk
public void CloneFile(string source, string destination, bool overwrite = false) public void CloneFile(string source, string destination, bool overwrite = false)
{ {
Ensure.That(source, () => source).IsValidPath(); Ensure.That(source, () => source).IsValidPath(PathValidationType.CurrentOs);
Ensure.That(destination, () => destination).IsValidPath(); Ensure.That(destination, () => destination).IsValidPath(PathValidationType.CurrentOs);
if (source.PathEquals(destination)) if (source.PathEquals(destination))
{ {
@ -233,8 +233,8 @@ namespace NzbDrone.Common.Disk
public void CopyFile(string source, string destination, bool overwrite = false) public void CopyFile(string source, string destination, bool overwrite = false)
{ {
Ensure.That(source, () => source).IsValidPath(); Ensure.That(source, () => source).IsValidPath(PathValidationType.CurrentOs);
Ensure.That(destination, () => destination).IsValidPath(); Ensure.That(destination, () => destination).IsValidPath(PathValidationType.CurrentOs);
if (source.PathEquals(destination)) if (source.PathEquals(destination))
{ {
@ -251,8 +251,8 @@ namespace NzbDrone.Common.Disk
public void MoveFile(string source, string destination, bool overwrite = false) public void MoveFile(string source, string destination, bool overwrite = false)
{ {
Ensure.That(source, () => source).IsValidPath(); Ensure.That(source, () => source).IsValidPath(PathValidationType.CurrentOs);
Ensure.That(destination, () => destination).IsValidPath(); Ensure.That(destination, () => destination).IsValidPath(PathValidationType.CurrentOs);
if (source.PathEquals(destination)) if (source.PathEquals(destination))
{ {
@ -270,8 +270,8 @@ namespace NzbDrone.Common.Disk
public void MoveFolder(string source, string destination) public void MoveFolder(string source, string destination)
{ {
Ensure.That(source, () => source).IsValidPath(); Ensure.That(source, () => source).IsValidPath(PathValidationType.CurrentOs);
Ensure.That(destination, () => destination).IsValidPath(); Ensure.That(destination, () => destination).IsValidPath(PathValidationType.CurrentOs);
Directory.Move(source, destination); Directory.Move(source, destination);
} }
@ -300,7 +300,7 @@ namespace NzbDrone.Common.Disk
public void DeleteFolder(string path, bool recursive) public void DeleteFolder(string path, bool recursive)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
var files = _fileSystem.Directory.GetFiles(path, "*.*", recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly); var files = _fileSystem.Directory.GetFiles(path, "*.*", recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
Array.ForEach(files, RemoveReadOnly); Array.ForEach(files, RemoveReadOnly);
@ -310,14 +310,14 @@ namespace NzbDrone.Common.Disk
public string ReadAllText(string filePath) public string ReadAllText(string filePath)
{ {
Ensure.That(filePath, () => filePath).IsValidPath(); Ensure.That(filePath, () => filePath).IsValidPath(PathValidationType.CurrentOs);
return _fileSystem.File.ReadAllText(filePath); return _fileSystem.File.ReadAllText(filePath);
} }
public void WriteAllText(string filename, string contents) public void WriteAllText(string filename, string contents)
{ {
Ensure.That(filename, () => filename).IsValidPath(); Ensure.That(filename, () => filename).IsValidPath(PathValidationType.CurrentOs);
RemoveReadOnly(filename); RemoveReadOnly(filename);
// File.WriteAllText is broken on net core when writing to some CIFS mounts // File.WriteAllText is broken on net core when writing to some CIFS mounts
@ -333,14 +333,14 @@ namespace NzbDrone.Common.Disk
public void FolderSetLastWriteTime(string path, DateTime dateTime) public void FolderSetLastWriteTime(string path, DateTime dateTime)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
_fileSystem.Directory.SetLastWriteTimeUtc(path, dateTime); _fileSystem.Directory.SetLastWriteTimeUtc(path, dateTime);
} }
public void FileSetLastWriteTime(string path, DateTime dateTime) public void FileSetLastWriteTime(string path, DateTime dateTime)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
_fileSystem.File.SetLastWriteTime(path, dateTime); _fileSystem.File.SetLastWriteTime(path, dateTime);
} }
@ -362,14 +362,14 @@ namespace NzbDrone.Common.Disk
public virtual string GetPathRoot(string path) public virtual string GetPathRoot(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return Path.GetPathRoot(path); return Path.GetPathRoot(path);
} }
public string GetParentFolder(string path) public string GetParentFolder(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
var parent = _fileSystem.Directory.GetParent(path.TrimEnd(Path.DirectorySeparatorChar)); var parent = _fileSystem.Directory.GetParent(path.TrimEnd(Path.DirectorySeparatorChar));
@ -402,7 +402,7 @@ namespace NzbDrone.Common.Disk
public void EmptyFolder(string path) public void EmptyFolder(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
foreach (var file in GetFiles(path, SearchOption.TopDirectoryOnly)) foreach (var file in GetFiles(path, SearchOption.TopDirectoryOnly))
{ {
@ -492,7 +492,7 @@ namespace NzbDrone.Common.Disk
public List<IDirectoryInfo> GetDirectoryInfos(string path) public List<IDirectoryInfo> GetDirectoryInfos(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
var di = _fileSystem.DirectoryInfo.FromDirectoryName(path); var di = _fileSystem.DirectoryInfo.FromDirectoryName(path);
@ -501,13 +501,13 @@ namespace NzbDrone.Common.Disk
public IDirectoryInfo GetDirectoryInfo(string path) public IDirectoryInfo GetDirectoryInfo(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return _fileSystem.DirectoryInfo.FromDirectoryName(path); return _fileSystem.DirectoryInfo.FromDirectoryName(path);
} }
public List<IFileInfo> GetFileInfos(string path, SearchOption searchOption = SearchOption.TopDirectoryOnly) public List<IFileInfo> GetFileInfos(string path, SearchOption searchOption = SearchOption.TopDirectoryOnly)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
var di = _fileSystem.DirectoryInfo.FromDirectoryName(path); var di = _fileSystem.DirectoryInfo.FromDirectoryName(path);
@ -516,7 +516,7 @@ namespace NzbDrone.Common.Disk
public IFileInfo GetFileInfo(string path) public IFileInfo GetFileInfo(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
return _fileSystem.FileInfo.FromFileName(path); return _fileSystem.FileInfo.FromFileName(path);
} }

@ -46,8 +46,8 @@ namespace NzbDrone.Common.Disk
public TransferMode TransferFolder(string sourcePath, string targetPath, TransferMode mode) public TransferMode TransferFolder(string sourcePath, string targetPath, TransferMode mode)
{ {
Ensure.That(sourcePath, () => sourcePath).IsValidPath(); Ensure.That(sourcePath, () => sourcePath).IsValidPath(PathValidationType.CurrentOs);
Ensure.That(targetPath, () => targetPath).IsValidPath(); Ensure.That(targetPath, () => targetPath).IsValidPath(PathValidationType.CurrentOs);
sourcePath = ResolveRealParentPath(sourcePath); sourcePath = ResolveRealParentPath(sourcePath);
targetPath = ResolveRealParentPath(targetPath); targetPath = ResolveRealParentPath(targetPath);
@ -143,8 +143,8 @@ namespace NzbDrone.Common.Disk
{ {
var filesCopied = 0; var filesCopied = 0;
Ensure.That(sourcePath, () => sourcePath).IsValidPath(); Ensure.That(sourcePath, () => sourcePath).IsValidPath(PathValidationType.CurrentOs);
Ensure.That(targetPath, () => targetPath).IsValidPath(); Ensure.That(targetPath, () => targetPath).IsValidPath(PathValidationType.CurrentOs);
sourcePath = ResolveRealParentPath(sourcePath); sourcePath = ResolveRealParentPath(sourcePath);
targetPath = ResolveRealParentPath(targetPath); targetPath = ResolveRealParentPath(targetPath);
@ -258,8 +258,8 @@ namespace NzbDrone.Common.Disk
public TransferMode TransferFile(string sourcePath, string targetPath, TransferMode mode, bool overwrite = false) public TransferMode TransferFile(string sourcePath, string targetPath, TransferMode mode, bool overwrite = false)
{ {
Ensure.That(sourcePath, () => sourcePath).IsValidPath(); Ensure.That(sourcePath, () => sourcePath).IsValidPath(PathValidationType.CurrentOs);
Ensure.That(targetPath, () => targetPath).IsValidPath(); Ensure.That(targetPath, () => targetPath).IsValidPath(PathValidationType.CurrentOs);
sourcePath = ResolveRealParentPath(sourcePath); sourcePath = ResolveRealParentPath(sourcePath);
targetPath = ResolveRealParentPath(targetPath); targetPath = ResolveRealParentPath(targetPath);

@ -71,7 +71,7 @@ namespace NzbDrone.Common.Disk
if ( if (
allowFoldersWithoutTrailingSlashes && allowFoldersWithoutTrailingSlashes &&
query.IsPathValid() && query.IsPathValid(PathValidationType.CurrentOs) &&
_diskProvider.FolderExists(query)) _diskProvider.FolderExists(query))
{ {
return GetResult(query, includeFiles); return GetResult(query, includeFiles);

@ -162,7 +162,7 @@ namespace NzbDrone.Common.Disk
} }
} }
public bool IsValid => _path.IsPathValid(); public bool IsValid => _path.IsPathValid(PathValidationType.CurrentOs);
private int GetFileNameIndex() private int GetFileNameIndex()
{ {

@ -0,0 +1,8 @@
namespace NzbDrone.Common.Disk
{
public enum PathValidationType
{
CurrentOs,
AnyOs
}
}

@ -1,5 +1,6 @@
using System.Diagnostics; using System.Diagnostics;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnsureThat.Resources; using NzbDrone.Common.EnsureThat.Resources;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
@ -111,14 +112,14 @@ namespace NzbDrone.Common.EnsureThat
} }
[DebuggerStepThrough] [DebuggerStepThrough]
public static Param<string> IsValidPath(this Param<string> param) public static Param<string> IsValidPath(this Param<string> param, PathValidationType validationType)
{ {
if (string.IsNullOrWhiteSpace(param.Value)) if (string.IsNullOrWhiteSpace(param.Value))
{ {
throw ExceptionFactory.CreateForParamValidation(param.Name, ExceptionMessages.EnsureExtensions_IsNotNullOrWhiteSpace); throw ExceptionFactory.CreateForParamValidation(param.Name, ExceptionMessages.EnsureExtensions_IsNotNullOrWhiteSpace);
} }
if (param.Value.IsPathValid()) if (param.Value.IsPathValid(validationType))
{ {
return param; return param;
} }

@ -30,7 +30,7 @@ namespace NzbDrone.Common.Extensions
public static string CleanFilePath(this string path) public static string CleanFilePath(this string path)
{ {
Ensure.That(path, () => path).IsNotNullOrWhiteSpace(); Ensure.That(path, () => path).IsNotNullOrWhiteSpace();
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.AnyOs);
var info = new FileInfo(path.Trim()); var info = new FileInfo(path.Trim());
return info.FullName.CleanFilePathBasic(); return info.FullName.CleanFilePathBasic();
@ -39,7 +39,7 @@ namespace NzbDrone.Common.Extensions
public static string CleanFilePathBasic(this string path) public static string CleanFilePathBasic(this string path)
{ {
// UNC // UNC
if (OsInfo.IsWindows && path.StartsWith(@"\\")) if (!path.Contains('/') && path.StartsWith(@"\\"))
{ {
return path.TrimEnd('/', '\\', ' '); return path.TrimEnd('/', '\\', ' ');
} }
@ -137,24 +137,24 @@ namespace NzbDrone.Common.Extensions
private static readonly Regex WindowsPathWithDriveRegex = new Regex(@"^[a-zA-Z]:\\", RegexOptions.Compiled); private static readonly Regex WindowsPathWithDriveRegex = new Regex(@"^[a-zA-Z]:\\", RegexOptions.Compiled);
public static bool IsPathValid(this string path) public static bool IsPathValid(this string path, PathValidationType validationType)
{ {
if (path.ContainsInvalidPathChars() || string.IsNullOrWhiteSpace(path)) if (path.ContainsInvalidPathChars() || string.IsNullOrWhiteSpace(path))
{ {
return false; return false;
} }
if (OsInfo.IsNotWindows) if (validationType == PathValidationType.AnyOs)
{ {
return path.StartsWith(Path.DirectorySeparatorChar.ToString()); return IsPathValidForWindows(path) || IsPathValidForNonWindows(path);
} }
if (path.StartsWith("\\") || WindowsPathWithDriveRegex.IsMatch(path)) if (OsInfo.IsNotWindows)
{ {
return true; return IsPathValidForNonWindows(path);
} }
return false; return IsPathValidForWindows(path);
} }
public static bool ContainsInvalidPathChars(this string text) public static bool ContainsInvalidPathChars(this string text)
@ -365,5 +365,15 @@ namespace NzbDrone.Common.Extensions
{ {
return Path.Combine(appFolderInfo.StartUpFolder, NLOG_CONFIG_FILE); return Path.Combine(appFolderInfo.StartUpFolder, NLOG_CONFIG_FILE);
} }
private static bool IsPathValidForWindows(string path)
{
return path.StartsWith("\\") || WindowsPathWithDriveRegex.IsMatch(path);
}
private static bool IsPathValidForNonWindows(string path)
{
return path.StartsWith("/");
}
} }
} }

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;

@ -108,7 +108,7 @@ namespace NzbDrone.Core.MediaFiles
{ {
Ensure.That(trackFile, () => trackFile).IsNotNull(); Ensure.That(trackFile, () => trackFile).IsNotNull();
Ensure.That(artist, () => artist).IsNotNull(); Ensure.That(artist, () => artist).IsNotNull();
Ensure.That(destinationFilePath, () => destinationFilePath).IsValidPath(); Ensure.That(destinationFilePath, () => destinationFilePath).IsValidPath(PathValidationType.CurrentOs);
var trackFilePath = trackFile.Path; var trackFilePath = trackFile.Path;

@ -59,7 +59,7 @@ namespace NzbDrone.Core.RootFolders
{ {
try try
{ {
if (folder.Path.IsPathValid()) if (folder.Path.IsPathValid(PathValidationType.CurrentOs))
{ {
GetDetails(folder); GetDetails(folder);
} }

@ -1,4 +1,5 @@
using FluentValidation.Validators; using FluentValidation.Validators;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
namespace NzbDrone.Core.Validation namespace NzbDrone.Core.Validation
@ -14,7 +15,7 @@ namespace NzbDrone.Core.Validation
return false; return false;
} }
return context.PropertyValue.ToString().IsPathValid(); return context.PropertyValue.ToString().IsPathValid(PathValidationType.CurrentOs);
} }
} }
} }

@ -1,5 +1,6 @@
using FluentValidation; using FluentValidation;
using FluentValidation.Validators; using FluentValidation.Validators;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
namespace NzbDrone.Core.Validation.Paths namespace NzbDrone.Core.Validation.Paths
@ -23,7 +24,7 @@ namespace NzbDrone.Core.Validation.Paths
return false; return false;
} }
return context.PropertyValue.ToString().IsPathValid(); return context.PropertyValue.ToString().IsPathValid(PathValidationType.CurrentOs);
} }
} }
} }

@ -54,7 +54,7 @@ namespace NzbDrone.Mono.Disk
public override long? GetAvailableSpace(string path) public override long? GetAvailableSpace(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
_logger.Debug($"path: {path}"); _logger.Debug($"path: {path}");
@ -233,7 +233,7 @@ namespace NzbDrone.Mono.Disk
public override long? GetTotalSize(string path) public override long? GetTotalSize(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
var mount = GetMount(path); var mount = GetMount(path);

@ -46,7 +46,7 @@ namespace NzbDrone.Windows.Disk
public override string GetPathRoot(string path) public override string GetPathRoot(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
var reparsePoint = GetReparsePoint(path); var reparsePoint = GetReparsePoint(path);
@ -55,7 +55,7 @@ namespace NzbDrone.Windows.Disk
public override long? GetAvailableSpace(string path) public override long? GetAvailableSpace(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
var root = GetPathRoot(path); var root = GetPathRoot(path);
@ -69,7 +69,7 @@ namespace NzbDrone.Windows.Disk
public override void InheritFolderPermissions(string filename) public override void InheritFolderPermissions(string filename)
{ {
Ensure.That(filename, () => filename).IsValidPath(); Ensure.That(filename, () => filename).IsValidPath(PathValidationType.CurrentOs);
var fileInfo = new FileInfo(filename); var fileInfo = new FileInfo(filename);
var fs = fileInfo.GetAccessControl(AccessControlSections.Access); var fs = fileInfo.GetAccessControl(AccessControlSections.Access);
@ -132,7 +132,7 @@ namespace NzbDrone.Windows.Disk
public override long? GetTotalSize(string path) public override long? GetTotalSize(string path)
{ {
Ensure.That(path, () => path).IsValidPath(); Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
var root = GetPathRoot(path); var root = GetPathRoot(path);
@ -146,7 +146,7 @@ namespace NzbDrone.Windows.Disk
private static long DriveFreeSpaceEx(string folderName) private static long DriveFreeSpaceEx(string folderName)
{ {
Ensure.That(folderName, () => folderName).IsValidPath(); Ensure.That(folderName, () => folderName).IsValidPath(PathValidationType.CurrentOs);
if (!folderName.EndsWith("\\")) if (!folderName.EndsWith("\\"))
{ {
@ -167,7 +167,7 @@ namespace NzbDrone.Windows.Disk
private static long DriveTotalSizeEx(string folderName) private static long DriveTotalSizeEx(string folderName)
{ {
Ensure.That(folderName, () => folderName).IsValidPath(); Ensure.That(folderName, () => folderName).IsValidPath(PathValidationType.CurrentOs);
if (!folderName.EndsWith("\\")) if (!folderName.EndsWith("\\"))
{ {

Loading…
Cancel
Save