|
@@ -62,6 +62,13 @@ namespace Jellyfin.Api.Controllers
|
|
|
// TODO: Deprecate with new iOS app
|
|
|
var file = segmentId + Path.GetExtension(Request.Path);
|
|
|
file = Path.Combine(_serverConfigurationManager.GetTranscodePath(), file);
|
|
|
+ var transcodePath = _serverConfigurationManager.GetTranscodePath();
|
|
|
+ file = Path.GetFullPath(Path.Combine(transcodePath, file));
|
|
|
+ var fileDir = Path.GetDirectoryName(file);
|
|
|
+ if (string.IsNullOrEmpty(fileDir) || !fileDir.StartsWith(transcodePath))
|
|
|
+ {
|
|
|
+ return BadRequest("Invalid segment.");
|
|
|
+ }
|
|
|
|
|
|
return FileStreamResponseHelpers.GetStaticFileResult(file, MimeTypes.GetMimeType(file)!, false, HttpContext);
|
|
|
}
|
|
@@ -82,6 +89,13 @@ namespace Jellyfin.Api.Controllers
|
|
|
{
|
|
|
var file = playlistId + Path.GetExtension(Request.Path);
|
|
|
file = Path.Combine(_serverConfigurationManager.GetTranscodePath(), file);
|
|
|
+ var transcodePath = _serverConfigurationManager.GetTranscodePath();
|
|
|
+ file = Path.GetFullPath(Path.Combine(transcodePath, file));
|
|
|
+ var fileDir = Path.GetDirectoryName(file);
|
|
|
+ if (string.IsNullOrEmpty(fileDir) || !fileDir.StartsWith(transcodePath) || Path.GetExtension(file) != ".m3u8")
|
|
|
+ {
|
|
|
+ return BadRequest("Invalid segment.");
|
|
|
+ }
|
|
|
|
|
|
return GetFileResult(file, file);
|
|
|
}
|
|
@@ -131,6 +145,12 @@ namespace Jellyfin.Api.Controllers
|
|
|
var transcodeFolderPath = _serverConfigurationManager.GetTranscodePath();
|
|
|
|
|
|
file = Path.Combine(transcodeFolderPath, file);
|
|
|
+ file = Path.GetFullPath(Path.Combine(transcodeFolderPath, file));
|
|
|
+ var fileDir = Path.GetDirectoryName(file);
|
|
|
+ if (string.IsNullOrEmpty(fileDir) || !fileDir.StartsWith(transcodeFolderPath))
|
|
|
+ {
|
|
|
+ return BadRequest("Invalid segment.");
|
|
|
+ }
|
|
|
|
|
|
var normalizedPlaylistId = playlistId;
|
|
|
|