From 353694177e978f3e5f78d9efd18c0d6ddb839d98 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Fri, 18 Nov 2022 11:42:23 +0100 Subject: [PATCH] Use Path.Join and Path.GetFileName for adding mods to not allow arbitrary folder but only those in the penumbra root directory. --- Penumbra/Api/PenumbraApi.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Penumbra/Api/PenumbraApi.cs b/Penumbra/Api/PenumbraApi.cs index 3521369c..dd83e2f0 100644 --- a/Penumbra/Api/PenumbraApi.cs +++ b/Penumbra/Api/PenumbraApi.cs @@ -371,7 +371,7 @@ public class PenumbraApi : IDisposable, IPenumbraApi public PenumbraApiEc AddMod( string modDirectory ) { CheckInitialized(); - var dir = new DirectoryInfo( Path.Combine( Penumbra.ModManager.BasePath.FullName, modDirectory ) ); + var dir = new DirectoryInfo( Path.Join( Penumbra.ModManager.BasePath.FullName, modDirectory ) ); if( !dir.Exists ) { return PenumbraApiEc.FileMissing; @@ -572,7 +572,7 @@ public class PenumbraApi : IDisposable, IPenumbraApi return ( PenumbraApiEc.InvalidArgument, string.Empty ); } - if( !forceOverwriteCharacter && Penumbra.CollectionManager.Individuals.Individuals.ContainsKey( NameToIdentifier(character) ) + if( !forceOverwriteCharacter && Penumbra.CollectionManager.Individuals.Individuals.ContainsKey( NameToIdentifier( character ) ) || Penumbra.TempMods.Collections.ContainsKey( character ) ) { return ( PenumbraApiEc.CharacterCollectionExists, string.Empty ); @@ -682,7 +682,7 @@ public class PenumbraApi : IDisposable, IPenumbraApi CheckInitialized(); var collection = Penumbra.TempMods.Collections.TryGetValue( characterName, out var c ) ? c - : Penumbra.CollectionManager.Individual( NameToIdentifier(characterName) ); + : Penumbra.CollectionManager.Individual( NameToIdentifier( characterName ) ); var set = collection.MetaCache?.Manipulations.ToArray() ?? Array.Empty< MetaManipulation >(); return Functions.ToCompressedBase64( set, MetaManipulation.CurrentVersion ); }