Selaa lähdekoodia

Escape the path to pass as a command line argument (#9178)

Dmitry Lyzo 2 vuotta sitten
vanhempi
sitoutus
09f1c7f535

+ 3 - 2
Jellyfin.Api/Controllers/DynamicHlsController.cs

@@ -21,6 +21,7 @@ using MediaBrowser.Controller.Dlna;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.MediaEncoding;
 using MediaBrowser.Controller.MediaEncoding;
 using MediaBrowser.Controller.Net;
 using MediaBrowser.Controller.Net;
+using MediaBrowser.MediaEncoding.Encoder;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Dlna;
 using MediaBrowser.Model.Dlna;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -1662,8 +1663,8 @@ namespace Jellyfin.Api.Controllers
                 startNumber.ToString(CultureInfo.InvariantCulture),
                 startNumber.ToString(CultureInfo.InvariantCulture),
                 baseUrlParam,
                 baseUrlParam,
                 isEventPlaylist ? "event" : "vod",
                 isEventPlaylist ? "event" : "vod",
-                outputTsArg,
-                outputPath).Trim();
+                EncodingUtils.NormalizePath(outputTsArg),
+                EncodingUtils.NormalizePath(outputPath)).Trim();
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 1 - 0
Jellyfin.Api/Jellyfin.Api.csproj

@@ -26,6 +26,7 @@
   <ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj" />
     <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj" />
     <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj" />
     <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj" />
+    <ProjectReference Include="..\MediaBrowser.MediaEncoding\MediaBrowser.MediaEncoding.csproj" />
     <ProjectReference Include="..\src\Jellyfin.MediaEncoding.Hls\Jellyfin.MediaEncoding.Hls.csproj" />
     <ProjectReference Include="..\src\Jellyfin.MediaEncoding.Hls\Jellyfin.MediaEncoding.Hls.csproj" />
   </ItemGroup>
   </ItemGroup>
 
 

+ 3 - 2
MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs

@@ -14,6 +14,7 @@ using MediaBrowser.Common.Extensions;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.MediaEncoding;
 using MediaBrowser.Controller.MediaEncoding;
+using MediaBrowser.MediaEncoding.Encoder;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -317,10 +318,10 @@ namespace MediaBrowser.MediaEncoding.Attachments
 
 
             var processArgs = string.Format(
             var processArgs = string.Format(
                 CultureInfo.InvariantCulture,
                 CultureInfo.InvariantCulture,
-                "-dump_attachment:{1} {2} -i {0} -t 0 -f null null",
+                "-dump_attachment:{1} \"{2}\" -i {0} -t 0 -f null null",
                 inputPath,
                 inputPath,
                 attachmentStreamIndex,
                 attachmentStreamIndex,
-                outputPath);
+                EncodingUtils.NormalizePath(outputPath));
 
 
             int exitCode;
             int exitCode;
 
 

+ 1 - 1
MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs

@@ -56,7 +56,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
         /// </summary>
         /// </summary>
         /// <param name="path">The path.</param>
         /// <param name="path">The path.</param>
         /// <returns>System.String.</returns>
         /// <returns>System.String.</returns>
-        private static string NormalizePath(string path)
+        public static string NormalizePath(string path)
         {
         {
             // Quotes are valid path characters in linux and they need to be escaped here with a leading \
             // Quotes are valid path characters in linux and they need to be escaped here with a leading \
             return path.Replace("\"", "\\\"", StringComparison.Ordinal);
             return path.Replace("\"", "\\\"", StringComparison.Ordinal);