| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | using System;using AutoFixture;using AutoFixture.AutoMoq;using Emby.Server.Implementations.Data;using Emby.Server.Implementations.Library;using MediaBrowser.Controller;using MediaBrowser.Controller.Entities;using MediaBrowser.Model.Entities;using Moq;using SharpFuzz;namespace Emby.Server.Implementations.Fuzz{    public static class Program    {        public static void Main(string[] args)        {            switch (args[0])            {                case "PathExtensions.TryReplaceSubPath": Run(PathExtensions_TryReplaceSubPath); return;                case "SqliteItemRepository.ItemImageInfoFromValueString": Run(SqliteItemRepository_ItemImageInfoFromValueString); return;                default: throw new ArgumentException($"Unknown fuzzing function: {args[0]}");            }        }        private static void Run(Action<string> action) => Fuzzer.OutOfProcess.Run(action);        private static void PathExtensions_TryReplaceSubPath(string data)        {            // Stupid, but it worked            var parts = data.Split(':');            if (parts.Length != 3)            {                return;            }            _ = PathExtensions.TryReplaceSubPath(parts[0], parts[1], parts[2], out _);        }        private static void SqliteItemRepository_ItemImageInfoFromValueString(string data)        {            var sqliteItemRepository = MockSqliteItemRepository();            sqliteItemRepository.ItemImageInfoFromValueString(data);        }        private static SqliteItemRepository MockSqliteItemRepository()        {            const string VirtualMetaDataPath = "%MetadataPath%";            const string MetaDataPath = "/meta/data/path";            var appHost = new Mock<IServerApplicationHost>();            appHost.Setup(x => x.ExpandVirtualPath(It.IsAny<string>()))                .Returns((string x) => x.Replace(VirtualMetaDataPath, MetaDataPath, StringComparison.Ordinal));            appHost.Setup(x => x.ReverseVirtualPath(It.IsAny<string>()))                .Returns((string x) => x.Replace(MetaDataPath, VirtualMetaDataPath, StringComparison.Ordinal));            IFixture fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true });            fixture.Inject(appHost);            return fixture.Create<SqliteItemRepository>();        }    }}
 |