Kaynağa Gözat

add null checks to video methods

Luke Pulverenti 11 yıl önce
ebeveyn
işleme
b50fc351a1

+ 17 - 3
MediaBrowser.Controller/Entities/Video.cs

@@ -225,11 +225,25 @@ namespace MediaBrowser.Controller.Entities
         {
             IEnumerable<FileSystemInfo> files;
 
+            var path = Path;
+
+            if (string.IsNullOrEmpty(path))
+            {
+                throw new ApplicationException(string.Format("Item {0} has a null path.", Name ?? Id.ToString()));
+            }
+
             if (VideoType == VideoType.BluRay || VideoType == VideoType.Dvd)
             {
-                files = new DirectoryInfo(System.IO.Path.GetDirectoryName(Path))
+                var parentPath = System.IO.Path.GetDirectoryName(path);
+
+                if (string.IsNullOrEmpty(parentPath))
+                {
+                    throw new ApplicationException("Unable to get parent path info from " + path);
+                }
+
+                files = new DirectoryInfo(parentPath)
                     .EnumerateDirectories()
-                    .Where(i => !string.Equals(i.FullName, Path, StringComparison.OrdinalIgnoreCase) && EntityResolutionHelper.IsMultiPartFile(i.Name));
+                    .Where(i => !string.Equals(i.FullName, path, StringComparison.OrdinalIgnoreCase) && EntityResolutionHelper.IsMultiPartFile(i.Name));
             }
             else
             {
@@ -240,7 +254,7 @@ namespace MediaBrowser.Controller.Entities
                         return false;
                     }
 
-                    return !string.Equals(i.FullName, Path, StringComparison.OrdinalIgnoreCase) && EntityResolutionHelper.IsVideoFile(i.FullName) && EntityResolutionHelper.IsMultiPartFile(i.Name);
+                    return !string.Equals(i.FullName, path, StringComparison.OrdinalIgnoreCase) && EntityResolutionHelper.IsVideoFile(i.FullName) && EntityResolutionHelper.IsMultiPartFile(i.Name);
                 });
             }
 

+ 15 - 0
MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs

@@ -66,6 +66,11 @@ namespace MediaBrowser.Controller.Resolvers
         /// <returns><c>true</c> if [is multi part file] [the specified path]; otherwise, <c>false</c>.</returns>
         public static bool IsMultiPartFile(string path)
         {
+            if (string.IsNullOrEmpty(path))
+            {
+                throw new ArgumentNullException("path");
+            }
+
             return MultiFileRegex.Match(path).Success || MultiFolderRegex.Match(path).Success;
         }
 
@@ -97,6 +102,11 @@ namespace MediaBrowser.Controller.Resolvers
         /// <returns><c>true</c> if [is audio file] [the specified args]; otherwise, <c>false</c>.</returns>
         public static bool IsAudioFile(string path)
         {
+            if (string.IsNullOrEmpty(path))
+            {
+                throw new ArgumentNullException("path");
+            }
+
             var extension = Path.GetExtension(path);
 
             if (string.IsNullOrEmpty(extension))
@@ -114,6 +124,11 @@ namespace MediaBrowser.Controller.Resolvers
         /// <returns><c>true</c> if [is video file] [the specified path]; otherwise, <c>false</c>.</returns>
         public static bool IsVideoFile(string path)
         {
+            if (string.IsNullOrEmpty(path))
+            {
+                throw new ArgumentNullException("path");
+            }
+
             var extension = Path.GetExtension(path);
 
             if (string.IsNullOrEmpty(extension))