diff --git a/src/Tgstation.Server.Host/Controllers/InstanceController.cs b/src/Tgstation.Server.Host/Controllers/InstanceController.cs index 22419b3be2..74c4d9b349 100644 --- a/src/Tgstation.Server.Host/Controllers/InstanceController.cs +++ b/src/Tgstation.Server.Host/Controllers/InstanceController.cs @@ -130,7 +130,14 @@ namespace Tgstation.Server.Host.Controllers }, out var normalizedLocalPath); if (rawPath.StartsWith(normalizedLocalPath, StringComparison.Ordinal)) - return Conflict("Instances cannot be created in the installation directory!"); + { + bool sameLength = rawPath.Length == normalizedLocalPath.Length; + char dirSeparatorChar = rawPath.ToCharArray()[normalizedLocalPath.Length]; + if(sameLength + || dirSeparatorChar == Path.DirectorySeparatorChar + || dirSeparatorChar == Path.AltDirectorySeparatorChar) + return Conflict(new ErrorMessage { Message = "Instances cannot be created in the installation directory!" }); + } var dirExistsTask = ioManager.DirectoryExists(model.Path, cancellationToken); bool attached = false;