From d3b9ebfa2ee7917e74863c33170873ae4c3dbc44 Mon Sep 17 00:00:00 2001 From: Mikal Stordal Date: Fri, 12 Apr 2024 22:53:39 +0000 Subject: [PATCH 1/2] fix: fix off-by-one error in `GetAttributeValue` Co-authored-by: fearnlj01 --- Emby.Server.Implementations/Library/PathExtensions.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Emby.Server.Implementations/Library/PathExtensions.cs b/Emby.Server.Implementations/Library/PathExtensions.cs index c4b6b37561..21e7079d88 100644 --- a/Emby.Server.Implementations/Library/PathExtensions.cs +++ b/Emby.Server.Implementations/Library/PathExtensions.cs @@ -31,8 +31,9 @@ namespace Emby.Server.Implementations.Library var attributeIndex = str.IndexOf(attribute, StringComparison.OrdinalIgnoreCase); - // Must be at least 3 characters after the attribute =, ], any character. - var maxIndex = str.Length - attribute.Length - 3; + // Must be at least 3 characters after the attribute =, ], any character, + // then we offset it by 1, because we want the index and not length. + var maxIndex = str.Length - attribute.Length - 2; while (attributeIndex > -1 && attributeIndex < maxIndex) { var attributeEnd = attributeIndex + attribute.Length; From 730a75a88a850bdd53dcacaccb43385e654b5ec8 Mon Sep 17 00:00:00 2001 From: Jordan Fearnley Date: Sat, 13 Apr 2024 02:04:40 +0100 Subject: [PATCH 2/2] Chore: Adds unit tests to support (#11351) --- .../Library/PathExtensionsTests.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/Jellyfin.Server.Implementations.Tests/Library/PathExtensionsTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Library/PathExtensionsTests.cs index d1be07aa22..940e3c2b12 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/Library/PathExtensionsTests.cs +++ b/tests/Jellyfin.Server.Implementations.Tests/Library/PathExtensionsTests.cs @@ -18,6 +18,12 @@ namespace Jellyfin.Server.Implementations.Tests.Library [InlineData("Superman: Red Son [tmdbid=618355][imdbid=tt10985510]", "imdbid", "tt10985510")] [InlineData("Superman: Red Son [tmdbid-618355][imdbid-tt10985510]", "imdbid", "tt10985510")] [InlineData("Superman: Red Son [tmdbid-618355][imdbid-tt10985510]", "tmdbid", "618355")] + [InlineData("Superman: Red Son [providera-id=1]", "providera-id", "1")] + [InlineData("Superman: Red Son [providerb-id=2]", "providerb-id", "2")] + [InlineData("Superman: Red Son [providera id=4]", "providera id", "4")] + [InlineData("Superman: Red Son [providerb id=5]", "providerb id", "5")] + [InlineData("Superman: Red Son [tmdbid=3]", "tmdbid", "3")] + [InlineData("Superman: Red Son [tvdbid-6]", "tvdbid", "6")] [InlineData("[tmdbid=618355]", "tmdbid", "618355")] [InlineData("[tmdbid-618355]", "tmdbid", "618355")] [InlineData("tmdbid=111111][tmdbid=618355]", "tmdbid", "618355")]