public void OpenFileSystemWithPermissions_ReturnsInvalidNcaMountPoint() { Horizon hos = HorizonFactory.CreateBasicHorizon(); HorizonClient regClient = hos.CreatePrivilegedHorizonClient(); HorizonClient client = hos.CreateHorizonClient(); var dataHeader = new AccessControlDataHeader(); var descriptor = new AccessControlDescriptor(); descriptor.Version = 123; dataHeader.Version = 123; descriptor.AccessFlags = (ulong)AccessControlBits.Bits.ApplicationInfo; dataHeader.AccessFlags = (ulong)AccessControlBits.Bits.ApplicationInfo; Assert.Success(regClient.Fs.RegisterProgram(client.ProcessId.Value, new ProgramId(123), StorageId.BuiltInUser, SpanHelpers.AsReadOnlyByteSpan(in dataHeader), SpanHelpers.AsReadOnlyByteSpan(in descriptor))); // We should get UnexpectedInNcaFileSystemServiceImplA because mounting NCAs from @System isn't allowed Result rc = client.Fs.MountContent("test".ToU8Span(), "@System:/fake.nca".ToU8Span(), ContentType.Control); Assert.Result(ResultFs.UnexpectedInNcaFileSystemServiceImplA, rc); }
public HorizonClient CreateHorizonClient(ProgramLocation location, AccessControlBits.Bits fsPermissions) { var descriptor = new AccessControlDescriptor(); var dataHeader = new AccessControlDataHeader(); descriptor.Version = 1; dataHeader.Version = 1; descriptor.AccessFlags = (ulong)fsPermissions; dataHeader.AccessFlags = (ulong)fsPermissions; return(CreateHorizonClientImpl(location, SpanHelpers.AsReadOnlyByteSpan(in dataHeader), SpanHelpers.AsReadOnlyByteSpan(in descriptor))); }
public HorizonClient CreateHorizonClient(ProgramId programId, AccessControlBits.Bits fsPermissions) { HorizonClient client = CreateHorizonClient(); var dataHeader = new AccessControlDataHeader(); var descriptor = new AccessControlDescriptor(); descriptor.Version = 1; dataHeader.Version = 1; descriptor.AccessFlags = (ulong)fsPermissions; dataHeader.AccessFlags = (ulong)fsPermissions; LoaderClient.Fs.RegisterProgram(client.ProcessId.Value, programId, StorageId.BuiltInUser, SpanHelpers.AsReadOnlyByteSpan(in dataHeader), SpanHelpers.AsReadOnlyByteSpan(in descriptor)) .ThrowIfFailure(); return(client); }
public void OpenFileSystemWithNoPermissions_ReturnsPermissionDenied() { Horizon hos = HorizonFactory.CreateBasicHorizon(); HorizonClient regClient = hos.CreatePrivilegedHorizonClient(); HorizonClient client = hos.CreateHorizonClient(); var dataHeader = new AccessControlDataHeader(); var descriptor = new AccessControlDescriptor(); descriptor.Version = 123; dataHeader.Version = 123; descriptor.AccessFlags = (ulong)AccessControlBits.Bits.None; dataHeader.AccessFlags = (ulong)AccessControlBits.Bits.None; Assert.Success(regClient.Fs.RegisterProgram(client.ProcessId.Value, new ProgramId(123), StorageId.BuiltInUser, SpanHelpers.AsReadOnlyByteSpan(in dataHeader), SpanHelpers.AsReadOnlyByteSpan(in descriptor))); Result rc = client.Fs.MountContent("test".ToU8Span(), "@System:/fake.nca".ToU8Span(), ContentType.Control); Assert.Result(ResultFs.PermissionDenied, rc); }