Exemple #1
0
        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);
        }
Exemple #2
0
        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)));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }