You've already forked linux-packaging-mono
Imported Upstream version 5.0.0.42
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
This commit is contained in:
parent
1190d13a04
commit
6bdd276d05
51
external/corefx/src/System.IO.Pipes.AccessControl/System.IO.Pipes.AccessControl.sln
vendored
Normal file
51
external/corefx/src/System.IO.Pipes.AccessControl/System.IO.Pipes.AccessControl.sln
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25123.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Pipes.AccessControl.Tests", "tests\System.IO.Pipes.AccessControl.Tests.csproj", "{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53} = {D77FBA6C-1AA6-45A4-93E2-97A370672C53}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Pipes.AccessControl", "src\System.IO.Pipes.AccessControl.csproj", "{D77FBA6C-1AA6-45A4-93E2-97A370672C53}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
DebugNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU = DebugNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU
|
||||
ReleaseNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU = ReleaseNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU
|
||||
DebugNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU = DebugNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU
|
||||
ReleaseNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU = ReleaseNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU
|
||||
DebugNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU = DebugNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU
|
||||
ReleaseNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU = ReleaseNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.DebugNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Windows_NT-Debug|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.DebugNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Windows_NT-Debug|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.ReleaseNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Windows_NT-Release|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.ReleaseNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Windows_NT-Release|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.DebugNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Windows_NT-Debug|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.DebugNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Windows_NT-Debug|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.ReleaseNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Windows_NT-Release|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.ReleaseNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Windows_NT-Release|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.DebugNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Windows_NT-Debug|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.DebugNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Windows_NT-Debug|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.ReleaseNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Windows_NT-Release|Any CPU
|
||||
{57E8F8D4-0766-4CC7-B3F9-B243B81DB6A5}.ReleaseNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Windows_NT-Release|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.DebugNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = net46-Windows_NT-Debug|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.DebugNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.Build.0 = net46-Windows_NT-Debug|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.ReleaseNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = net46-Windows_NT-Release|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.ReleaseNETCoreAppnet46-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.Build.0 = net46-Windows_NT-Release|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.DebugNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Windows_NT-Debug|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.DebugNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Windows_NT-Debug|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.ReleaseNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Windows_NT-Release|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.ReleaseNETCoreAppnetstandard1.3-Windows_NTnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Windows_NT-Release|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.DebugNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Unix-Debug|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.DebugNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Unix-Debug|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.ReleaseNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU.ActiveCfg = netstandard1.3-Unix-Release|Any CPU
|
||||
{D77FBA6C-1AA6-45A4-93E2-97A370672C53}.ReleaseNETCoreAppnetstandard1.3-Unixnetstandard1.3-Windows_NT|AnyCPU.Build.0 = netstandard1.3-Unix-Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
7
external/corefx/src/System.IO.Pipes.AccessControl/dir.props
vendored
Normal file
7
external/corefx/src/System.IO.Pipes.AccessControl/dir.props
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\dir.props" />
|
||||
<PropertyGroup>
|
||||
<AssemblyVersion>4.0.2.0</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
</Project>
|
8
external/corefx/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.builds
vendored
Normal file
8
external/corefx/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.builds
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
|
||||
<ItemGroup>
|
||||
<Project Include="System.IO.Pipes.AccessControl.pkgproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.traversal.targets))\dir.traversal.targets" />
|
||||
</Project>
|
14
external/corefx/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj
vendored
Normal file
14
external/corefx/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ref\System.IO.Pipes.AccessControl.csproj">
|
||||
<SupportedFramework>net46;netcoreapp1.0</SupportedFramework>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\src\System.IO.Pipes.AccessControl.builds" />
|
||||
<NotSupportedOnTargetFramework Include="netcore50">
|
||||
<PackageTargetRuntime>win</PackageTargetRuntime>
|
||||
</NotSupportedOnTargetFramework>
|
||||
</ItemGroup>
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
</Project>
|
8
external/corefx/src/System.IO.Pipes.AccessControl/ref/Configurations.props
vendored
Normal file
8
external/corefx/src/System.IO.Pipes.AccessControl/ref/Configurations.props
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<BuildConfigurations>
|
||||
netstandard;
|
||||
</BuildConfigurations>
|
||||
</PropertyGroup>
|
||||
</Project>
|
72
external/corefx/src/System.IO.Pipes.AccessControl/ref/System.IO.Pipes.AccessControl.cs
vendored
Normal file
72
external/corefx/src/System.IO.Pipes.AccessControl/ref/System.IO.Pipes.AccessControl.cs
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
// ------------------------------------------------------------------------------
|
||||
// Changes to this file must follow the http://aka.ms/api-review process.
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
namespace System.IO.Pipes
|
||||
{
|
||||
[System.FlagsAttribute]
|
||||
public enum PipeAccessRights
|
||||
{
|
||||
AccessSystemSecurity = 16777216,
|
||||
ChangePermissions = 262144,
|
||||
CreateNewInstance = 4,
|
||||
Delete = 65536,
|
||||
FullControl = 2032031,
|
||||
Read = 131209,
|
||||
ReadAttributes = 128,
|
||||
ReadData = 1,
|
||||
ReadExtendedAttributes = 8,
|
||||
ReadPermissions = 131072,
|
||||
ReadWrite = 131483,
|
||||
Synchronize = 1048576,
|
||||
TakeOwnership = 524288,
|
||||
Write = 274,
|
||||
WriteAttributes = 256,
|
||||
WriteData = 2,
|
||||
WriteExtendedAttributes = 16,
|
||||
}
|
||||
public sealed partial class PipeAccessRule : System.Security.AccessControl.AccessRule
|
||||
{
|
||||
public PipeAccessRule(System.Security.Principal.IdentityReference identity, System.IO.Pipes.PipeAccessRights rights, System.Security.AccessControl.AccessControlType type) : base(default(System.Security.Principal.IdentityReference), default(int), default(bool), default(System.Security.AccessControl.InheritanceFlags), default(System.Security.AccessControl.PropagationFlags), default(System.Security.AccessControl.AccessControlType)) { }
|
||||
public PipeAccessRule(string identity, System.IO.Pipes.PipeAccessRights rights, System.Security.AccessControl.AccessControlType type) : base(default(System.Security.Principal.IdentityReference), default(int), default(bool), default(System.Security.AccessControl.InheritanceFlags), default(System.Security.AccessControl.PropagationFlags), default(System.Security.AccessControl.AccessControlType)) { }
|
||||
public System.IO.Pipes.PipeAccessRights PipeAccessRights { get { throw null; } }
|
||||
}
|
||||
public sealed partial class PipeAuditRule : System.Security.AccessControl.AuditRule
|
||||
{
|
||||
public PipeAuditRule(System.Security.Principal.IdentityReference identity, System.IO.Pipes.PipeAccessRights rights, System.Security.AccessControl.AuditFlags flags) : base(default(System.Security.Principal.IdentityReference), default(int), default(bool), default(System.Security.AccessControl.InheritanceFlags), default(System.Security.AccessControl.PropagationFlags), default(System.Security.AccessControl.AuditFlags)) { }
|
||||
public PipeAuditRule(string identity, System.IO.Pipes.PipeAccessRights rights, System.Security.AccessControl.AuditFlags flags) : base(default(System.Security.Principal.IdentityReference), default(int), default(bool), default(System.Security.AccessControl.InheritanceFlags), default(System.Security.AccessControl.PropagationFlags), default(System.Security.AccessControl.AuditFlags)) { }
|
||||
public System.IO.Pipes.PipeAccessRights PipeAccessRights { get { throw null; } }
|
||||
}
|
||||
public static partial class PipesAclExtensions {
|
||||
[System.Security.SecurityCriticalAttribute]
|
||||
public static System.IO.Pipes.PipeSecurity GetAccessControl(this System.IO.Pipes.PipeStream stream) { throw null; }
|
||||
[System.Security.SecurityCriticalAttribute]
|
||||
public static void SetAccessControl(this System.IO.Pipes.PipeStream stream, System.IO.Pipes.PipeSecurity pipeSecurity) { }
|
||||
}
|
||||
public partial class PipeSecurity : System.Security.AccessControl.NativeObjectSecurity
|
||||
{
|
||||
public PipeSecurity() : base(default(bool), default(System.Security.AccessControl.ResourceType)) { }
|
||||
public override System.Type AccessRightType { get { throw null; } }
|
||||
public override System.Type AccessRuleType { get { throw null; } }
|
||||
public override System.Type AuditRuleType { get { throw null; } }
|
||||
public override System.Security.AccessControl.AccessRule AccessRuleFactory(System.Security.Principal.IdentityReference identityReference, int accessMask, bool isInherited, System.Security.AccessControl.InheritanceFlags inheritanceFlags, System.Security.AccessControl.PropagationFlags propagationFlags, System.Security.AccessControl.AccessControlType type) { throw null; }
|
||||
public void AddAccessRule(System.IO.Pipes.PipeAccessRule rule) { }
|
||||
public void AddAuditRule(System.IO.Pipes.PipeAuditRule rule) { }
|
||||
public sealed override System.Security.AccessControl.AuditRule AuditRuleFactory(System.Security.Principal.IdentityReference identityReference, int accessMask, bool isInherited, System.Security.AccessControl.InheritanceFlags inheritanceFlags, System.Security.AccessControl.PropagationFlags propagationFlags, System.Security.AccessControl.AuditFlags flags) { throw null; }
|
||||
[System.Security.SecurityCriticalAttribute]
|
||||
protected internal void Persist(System.Runtime.InteropServices.SafeHandle handle) { }
|
||||
[System.Security.SecurityCriticalAttribute]
|
||||
protected internal void Persist(string name) { }
|
||||
public bool RemoveAccessRule(System.IO.Pipes.PipeAccessRule rule) { throw null; }
|
||||
public void RemoveAccessRuleSpecific(System.IO.Pipes.PipeAccessRule rule) { }
|
||||
public bool RemoveAuditRule(System.IO.Pipes.PipeAuditRule rule) { throw null; }
|
||||
public void RemoveAuditRuleAll(System.IO.Pipes.PipeAuditRule rule) { }
|
||||
public void RemoveAuditRuleSpecific(System.IO.Pipes.PipeAuditRule rule) { }
|
||||
public void ResetAccessRule(System.IO.Pipes.PipeAccessRule rule) { }
|
||||
public void SetAccessRule(System.IO.Pipes.PipeAccessRule rule) { }
|
||||
public void SetAuditRule(System.IO.Pipes.PipeAuditRule rule) { }
|
||||
}
|
||||
}
|
14
external/corefx/src/System.IO.Pipes.AccessControl/ref/System.IO.Pipes.AccessControl.csproj
vendored
Normal file
14
external/corefx/src/System.IO.Pipes.AccessControl/ref/System.IO.Pipes.AccessControl.csproj
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Debug|AnyCPU'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Release|AnyCPU'" />
|
||||
<ItemGroup>
|
||||
<Compile Include="System.IO.Pipes.AccessControl.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\System.Security.AccessControl\ref\System.Security.AccessControl.csproj" />
|
||||
<ProjectReference Include="..\..\System.Security.Principal.Windows\ref\System.Security.Principal.Windows.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
</Project>
|
10
external/corefx/src/System.IO.Pipes.AccessControl/src/Configurations.props
vendored
Normal file
10
external/corefx/src/System.IO.Pipes.AccessControl/src/Configurations.props
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<BuildConfigurations>
|
||||
net46-Windows_NT;
|
||||
netstandard-Windows_NT;
|
||||
netstandard-Unix;
|
||||
</BuildConfigurations>
|
||||
</PropertyGroup>
|
||||
</Project>
|
129
external/corefx/src/System.IO.Pipes.AccessControl/src/Resources/Strings.resx
vendored
Normal file
129
external/corefx/src/System.IO.Pipes.AccessControl/src/Resources/Strings.resx
vendored
Normal file
@@ -0,0 +1,129 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ArgumentOutOfRange_NeedValidPipeAccessRights" xml:space="preserve">
|
||||
<value>Need valid PipeAccessRights value.</value>
|
||||
</data>
|
||||
<data name="Argument_NonContainerInvalidAnyFlag" xml:space="preserve">
|
||||
<value>This flag may not be set on a pipe.</value>
|
||||
</data>
|
||||
<data name="InvalidOperation_PipeNotYetConnected" xml:space="preserve">
|
||||
<value>Pipe is not connected.</value>
|
||||
</data>
|
||||
</root>
|
35
external/corefx/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj
vendored
Normal file
35
external/corefx/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
|
||||
<PropertyGroup>
|
||||
<AssemblyName>System.IO.Pipes.AccessControl</AssemblyName>
|
||||
<ProjectGuid>{D77FBA6C-1AA6-45A4-93E2-97A370672C53}</ProjectGuid>
|
||||
<AllowUnsafeBlocks Condition="'$(TargetGroup)'=='netstandard'">true</AllowUnsafeBlocks>
|
||||
<GeneratePlatformNotSupportedAssembly Condition="'$(TargetsUnix)' == 'true'">true</GeneratePlatformNotSupportedAssembly>
|
||||
<IsPartialFacadeAssembly Condition="'$(TargetGroup)'=='net46'">true</IsPartialFacadeAssembly>
|
||||
</PropertyGroup>
|
||||
<!-- Default configurations to help VS understand the options -->
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='net46-Windows_NT-Debug|AnyCPU'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='net46-Windows_NT-Release|AnyCPU'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netstandard-Windows_NT-Debug|AnyCPU'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netstandard-Windows_NT-Release|AnyCPU'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netstandard-Unix-Debug|AnyCPU'" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netstandard-Unix-Release|AnyCPU'" />
|
||||
<ItemGroup Condition="'$(IsPartialFacadeAssembly)'!='true' AND '$(TargetsWindows)'=='true'">
|
||||
<Compile Include="System\IO\PipeSecurity.cs" />
|
||||
<Compile Include="System\IO\PipeAccessRights.cs" />
|
||||
<Compile Include="System\IO\PipeAccessRule.cs" />
|
||||
<Compile Include="System\IO\PipeAuditRule.cs" />
|
||||
<Compile Include="System\IO\PipesAclExtensions.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetGroup)'=='net46' AND '$(TargetsWindows)'=='true'">
|
||||
<TargetingPackReference Include="mscorlib" />
|
||||
<TargetingPackReference Include="System.Core" />
|
||||
<Compile Include="System\IO\PipesAclExtensions.net46.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Security.AccessControl" />
|
||||
<Reference Include="System.Security.Principal.Windows" />
|
||||
</ItemGroup>
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
</Project>
|
52
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipeAccessRights.cs
vendored
Normal file
52
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipeAccessRights.cs
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
namespace System.IO.Pipes
|
||||
{
|
||||
[Flags]
|
||||
public enum PipeAccessRights
|
||||
{
|
||||
// No None field - An ACE with the value 0 cannot grant nor deny.
|
||||
ReadData = 0x000001,
|
||||
WriteData = 0x000002,
|
||||
|
||||
// Note that all client named pipes require ReadAttributes access even if the user does not specify it.
|
||||
// (This is because CreateFile slaps on the requirement before calling NTCreateFile (at least in WinXP SP2)).
|
||||
ReadAttributes = 0x000080,
|
||||
WriteAttributes = 0x000100,
|
||||
|
||||
// These aren't really needed since there is no operation that requires this access, but they are left here
|
||||
// so that people can specify ACLs that others can open by specifying a PipeDirection rather than a
|
||||
// PipeAccessRights (PipeDirection.In/Out maps to GENERIC_READ/WRITE access).
|
||||
ReadExtendedAttributes = 0x000008,
|
||||
WriteExtendedAttributes = 0x000010,
|
||||
|
||||
CreateNewInstance = 0x000004, // AppendData
|
||||
|
||||
// Again, this is not needed but it should be here so that our FullControl matches windows.
|
||||
Delete = 0x010000,
|
||||
|
||||
ReadPermissions = 0x020000,
|
||||
ChangePermissions = 0x040000,
|
||||
TakeOwnership = 0x080000,
|
||||
Synchronize = 0x100000,
|
||||
|
||||
FullControl = ReadData | WriteData | ReadAttributes | ReadExtendedAttributes |
|
||||
WriteAttributes | WriteExtendedAttributes | CreateNewInstance |
|
||||
Delete | ReadPermissions | ChangePermissions | TakeOwnership |
|
||||
Synchronize,
|
||||
|
||||
Read = ReadData | ReadAttributes | ReadExtendedAttributes | ReadPermissions,
|
||||
Write = WriteData | WriteAttributes | WriteExtendedAttributes, // | CreateNewInstance, For security, I really don't this CreateNewInstance belongs here.
|
||||
ReadWrite = Read | Write,
|
||||
|
||||
// These are somewhat similar to what you get if you use PipeDirection:
|
||||
//In = ReadData | ReadAttributes | ReadExtendedAttributes | ReadPermissions,
|
||||
//Out = WriteData | WriteAttributes | WriteExtendedAttributes | ChangePermissions | CreateNewInstance | ReadAttributes, // NOTE: Not sure if ReadAttributes should really be here
|
||||
//InOut = In | Out,
|
||||
|
||||
AccessSystemSecurity = 0x01000000, // Allow changes to SACL.
|
||||
}
|
||||
}
|
||||
|
74
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipeAccessRule.cs
vendored
Normal file
74
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipeAccessRule.cs
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Security.AccessControl;
|
||||
using System.Security.Principal;
|
||||
|
||||
namespace System.IO.Pipes
|
||||
{
|
||||
// [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
|
||||
public sealed class PipeAccessRule : AccessRule
|
||||
{
|
||||
//
|
||||
// Constructor for creating access rules for pipe objects
|
||||
//
|
||||
public PipeAccessRule( String identity, PipeAccessRights rights, AccessControlType type)
|
||||
: this( new NTAccount(identity), AccessMaskFromRights(rights, type), false, type)
|
||||
{
|
||||
}
|
||||
|
||||
public PipeAccessRule( IdentityReference identity, PipeAccessRights rights, AccessControlType type)
|
||||
: this(identity, AccessMaskFromRights(rights, type), false, type)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Internal constructor to be called by public constructors
|
||||
// and the access rights factory methods
|
||||
//
|
||||
internal PipeAccessRule( IdentityReference identity, int accessMask, bool isInherited, AccessControlType type)
|
||||
: base( identity, accessMask, isInherited, InheritanceFlags.None, PropagationFlags.None, type)
|
||||
{
|
||||
}
|
||||
|
||||
public PipeAccessRights PipeAccessRights
|
||||
{
|
||||
get
|
||||
{
|
||||
return RightsFromAccessMask(base.AccessMask);
|
||||
}
|
||||
}
|
||||
|
||||
// ACL's on pipes have a SYNCHRONIZE bit, and CreateFile ALWAYS asks for it.
|
||||
// So for allows, let's always include this bit, and for denies, let's never
|
||||
// include this bit unless we're denying full control. This is the right
|
||||
// thing for users, even if it does make the model look asymmetrical from a
|
||||
// purist point of view.
|
||||
internal static int AccessMaskFromRights(PipeAccessRights rights, AccessControlType controlType)
|
||||
{
|
||||
if (rights < (PipeAccessRights)0 || rights > (PipeAccessRights.FullControl | PipeAccessRights.AccessSystemSecurity))
|
||||
throw new ArgumentOutOfRangeException(nameof(rights), SR.ArgumentOutOfRange_NeedValidPipeAccessRights);
|
||||
|
||||
if (controlType == AccessControlType.Allow)
|
||||
{
|
||||
rights |= PipeAccessRights.Synchronize;
|
||||
}
|
||||
else if (controlType == AccessControlType.Deny)
|
||||
{
|
||||
if (rights != PipeAccessRights.FullControl)
|
||||
{
|
||||
rights &= ~PipeAccessRights.Synchronize;
|
||||
}
|
||||
}
|
||||
|
||||
return (int)rights;
|
||||
}
|
||||
|
||||
internal static PipeAccessRights RightsFromAccessMask(int accessMask)
|
||||
{
|
||||
return (PipeAccessRights)accessMask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
71
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipeAuditRule.cs
vendored
Normal file
71
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipeAuditRule.cs
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Security.AccessControl;
|
||||
using System.Security.Principal;
|
||||
|
||||
namespace System.IO.Pipes
|
||||
{
|
||||
//[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
|
||||
public sealed class PipeAuditRule : AuditRule
|
||||
{
|
||||
public PipeAuditRule(
|
||||
IdentityReference identity,
|
||||
PipeAccessRights rights,
|
||||
AuditFlags flags)
|
||||
: this(
|
||||
identity,
|
||||
AccessMaskFromRights(rights),
|
||||
false,
|
||||
flags)
|
||||
{
|
||||
}
|
||||
|
||||
public PipeAuditRule(
|
||||
String identity,
|
||||
PipeAccessRights rights,
|
||||
AuditFlags flags)
|
||||
: this(
|
||||
new NTAccount(identity),
|
||||
AccessMaskFromRights(rights),
|
||||
false,
|
||||
flags)
|
||||
{
|
||||
}
|
||||
|
||||
internal PipeAuditRule(
|
||||
IdentityReference identity,
|
||||
int accessMask,
|
||||
bool isInherited,
|
||||
AuditFlags flags)
|
||||
: base(
|
||||
identity,
|
||||
accessMask,
|
||||
isInherited,
|
||||
InheritanceFlags.None,
|
||||
PropagationFlags.None,
|
||||
flags)
|
||||
{
|
||||
}
|
||||
|
||||
private static int AccessMaskFromRights(PipeAccessRights rights)
|
||||
{
|
||||
if (rights < (PipeAccessRights)0 || rights > (PipeAccessRights.FullControl | PipeAccessRights.AccessSystemSecurity))
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(nameof(rights), SR.ArgumentOutOfRange_NeedValidPipeAccessRights);
|
||||
}
|
||||
|
||||
return (int)rights;
|
||||
}
|
||||
|
||||
public PipeAccessRights PipeAccessRights
|
||||
{
|
||||
get
|
||||
{
|
||||
return PipeAccessRule.RightsFromAccessMask(base.AccessMask);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
285
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipeSecurity.cs
vendored
Normal file
285
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipeSecurity.cs
vendored
Normal file
@@ -0,0 +1,285 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using System.Security.AccessControl;
|
||||
using System.Security.Principal;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.IO.Pipes
|
||||
{
|
||||
//[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
|
||||
public class PipeSecurity : NativeObjectSecurity
|
||||
{
|
||||
public PipeSecurity()
|
||||
: base(false, ResourceType.KernelObject) { }
|
||||
|
||||
// Used by PipeStream.GetAccessControl
|
||||
[System.Security.SecuritySafeCritical]
|
||||
internal PipeSecurity(SafePipeHandle safeHandle, AccessControlSections includeSections)
|
||||
: base(false, ResourceType.KernelObject, safeHandle, includeSections) { }
|
||||
|
||||
public void AddAccessRule(PipeAccessRule rule)
|
||||
{
|
||||
if (rule == null)
|
||||
throw new ArgumentNullException(nameof(rule));
|
||||
|
||||
base.AddAccessRule(rule);
|
||||
}
|
||||
|
||||
public void SetAccessRule(PipeAccessRule rule)
|
||||
{
|
||||
if (rule == null)
|
||||
throw new ArgumentNullException(nameof(rule));
|
||||
|
||||
base.SetAccessRule(rule);
|
||||
}
|
||||
|
||||
public void ResetAccessRule(PipeAccessRule rule)
|
||||
{
|
||||
if (rule == null)
|
||||
throw new ArgumentNullException(nameof(rule));
|
||||
|
||||
base.ResetAccessRule(rule);
|
||||
}
|
||||
|
||||
public bool RemoveAccessRule(PipeAccessRule rule)
|
||||
{
|
||||
if (rule == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(rule));
|
||||
}
|
||||
|
||||
// If the rule to be removed matches what is there currently then
|
||||
// remove it unaltered. That is, don't mask off the Synchronize bit.
|
||||
AuthorizationRuleCollection rules = GetAccessRules(true, true, rule.IdentityReference.GetType());
|
||||
|
||||
for (int i = 0; i < rules.Count; i++)
|
||||
{
|
||||
PipeAccessRule fsrule = rules[i] as PipeAccessRule;
|
||||
|
||||
if ((fsrule != null) && (fsrule.PipeAccessRights == rule.PipeAccessRights)
|
||||
&& (fsrule.IdentityReference == rule.IdentityReference)
|
||||
&& (fsrule.AccessControlType == rule.AccessControlType))
|
||||
{
|
||||
return base.RemoveAccessRule(rule);
|
||||
}
|
||||
}
|
||||
|
||||
// It didn't exactly match any of the current rules so remove this way:
|
||||
// mask off the synchronize bit (that is automatically added for Allow)
|
||||
// before removing the ACL. The logic here should be same as Deny and hence
|
||||
// fake a call to AccessMaskFromRights as though the ACL is for Deny
|
||||
if (rule.PipeAccessRights != PipeAccessRights.FullControl)
|
||||
{
|
||||
return base.RemoveAccessRule(new PipeAccessRule(
|
||||
rule.IdentityReference,
|
||||
PipeAccessRule.AccessMaskFromRights(rule.PipeAccessRights, AccessControlType.Deny),
|
||||
false,
|
||||
rule.AccessControlType));
|
||||
}
|
||||
else
|
||||
{
|
||||
return base.RemoveAccessRule(rule);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveAccessRuleSpecific(PipeAccessRule rule)
|
||||
{
|
||||
if (rule == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(rule));
|
||||
}
|
||||
|
||||
// If the rule to be removed matches what is there currently then
|
||||
// remove it unaltered. That is, don't mask off the Synchronize bit
|
||||
AuthorizationRuleCollection rules = GetAccessRules(true, true,
|
||||
rule.IdentityReference.GetType());
|
||||
|
||||
for (int i = 0; i < rules.Count; i++)
|
||||
{
|
||||
PipeAccessRule fsrule = rules[i] as PipeAccessRule;
|
||||
|
||||
if ((fsrule != null) && (fsrule.PipeAccessRights == rule.PipeAccessRights)
|
||||
&& (fsrule.IdentityReference == rule.IdentityReference)
|
||||
&& (fsrule.AccessControlType == rule.AccessControlType))
|
||||
{
|
||||
base.RemoveAccessRuleSpecific(rule);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// It wasn't an exact match so try masking the sychronize bit (that is
|
||||
// automatically added for Allow) before removing the ACL. The logic
|
||||
// here should be same as Deny and hence fake a call to
|
||||
// AccessMaskFromRights as though the ACL is for Deny
|
||||
if (rule.PipeAccessRights != PipeAccessRights.FullControl)
|
||||
{
|
||||
base.RemoveAccessRuleSpecific(new PipeAccessRule(rule.IdentityReference,
|
||||
PipeAccessRule.AccessMaskFromRights(rule.PipeAccessRights, AccessControlType.Deny),
|
||||
false,
|
||||
rule.AccessControlType));
|
||||
}
|
||||
else
|
||||
{
|
||||
base.RemoveAccessRuleSpecific(rule);
|
||||
}
|
||||
}
|
||||
|
||||
public void AddAuditRule(PipeAuditRule rule)
|
||||
{
|
||||
base.AddAuditRule(rule);
|
||||
}
|
||||
|
||||
public void SetAuditRule(PipeAuditRule rule)
|
||||
{
|
||||
base.SetAuditRule(rule);
|
||||
}
|
||||
|
||||
public bool RemoveAuditRule(PipeAuditRule rule)
|
||||
{
|
||||
return base.RemoveAuditRule(rule);
|
||||
}
|
||||
|
||||
public void RemoveAuditRuleAll(PipeAuditRule rule)
|
||||
{
|
||||
base.RemoveAuditRuleAll(rule);
|
||||
}
|
||||
|
||||
public void RemoveAuditRuleSpecific(PipeAuditRule rule)
|
||||
{
|
||||
base.RemoveAuditRuleSpecific(rule);
|
||||
}
|
||||
|
||||
public override AccessRule AccessRuleFactory(IdentityReference identityReference,
|
||||
int accessMask, bool isInherited, InheritanceFlags inheritanceFlags,
|
||||
PropagationFlags propagationFlags, AccessControlType type)
|
||||
{
|
||||
// Throw if inheritance flags or propagation flags set. Have to include in signature
|
||||
// since this is an override
|
||||
if (inheritanceFlags != InheritanceFlags.None)
|
||||
{
|
||||
throw new ArgumentException(SR.Argument_NonContainerInvalidAnyFlag, nameof(inheritanceFlags));
|
||||
}
|
||||
if (propagationFlags != PropagationFlags.None)
|
||||
{
|
||||
throw new ArgumentException(SR.Argument_NonContainerInvalidAnyFlag, nameof(propagationFlags));
|
||||
}
|
||||
|
||||
return new PipeAccessRule(
|
||||
identityReference,
|
||||
accessMask,
|
||||
isInherited,
|
||||
type);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public sealed override AuditRule AuditRuleFactory(
|
||||
IdentityReference identityReference,
|
||||
int accessMask,
|
||||
bool isInherited,
|
||||
InheritanceFlags inheritanceFlags,
|
||||
PropagationFlags propagationFlags,
|
||||
AuditFlags flags)
|
||||
{
|
||||
|
||||
// Throw if inheritance flags or propagation flags set. Have to include in signature
|
||||
// since this is an override
|
||||
if (inheritanceFlags != InheritanceFlags.None)
|
||||
{
|
||||
throw new ArgumentException(SR.Argument_NonContainerInvalidAnyFlag, nameof(inheritanceFlags));
|
||||
}
|
||||
if (propagationFlags != PropagationFlags.None)
|
||||
{
|
||||
throw new ArgumentException(SR.Argument_NonContainerInvalidAnyFlag, nameof(propagationFlags));
|
||||
}
|
||||
|
||||
return new PipeAuditRule(
|
||||
identityReference,
|
||||
accessMask,
|
||||
isInherited,
|
||||
flags);
|
||||
}
|
||||
|
||||
private AccessControlSections GetAccessControlSectionsFromChanges()
|
||||
{
|
||||
AccessControlSections persistRules = AccessControlSections.None;
|
||||
if (AccessRulesModified)
|
||||
persistRules = AccessControlSections.Access;
|
||||
if (AuditRulesModified)
|
||||
persistRules |= AccessControlSections.Audit;
|
||||
if (OwnerModified)
|
||||
persistRules |= AccessControlSections.Owner;
|
||||
if (GroupModified)
|
||||
persistRules |= AccessControlSections.Group;
|
||||
return persistRules;
|
||||
}
|
||||
|
||||
// Use this in your own Persist after you have demanded any appropriate CAS permissions.
|
||||
// Note that you will want your version to be internal and use a specialized Safe Handle.
|
||||
[System.Security.SecurityCritical]
|
||||
//[SecurityPermission(SecurityAction.Assert, UnmanagedCode = true)]
|
||||
protected internal void Persist(SafeHandle handle)
|
||||
{
|
||||
WriteLock();
|
||||
|
||||
try
|
||||
{
|
||||
AccessControlSections persistRules = GetAccessControlSectionsFromChanges();
|
||||
base.Persist(handle, persistRules);
|
||||
OwnerModified = GroupModified = AuditRulesModified = AccessRulesModified = false;
|
||||
}
|
||||
finally
|
||||
{
|
||||
WriteUnlock();
|
||||
}
|
||||
}
|
||||
|
||||
// Use this in your own Persist after you have demanded any appropriate CAS permissions.
|
||||
// Note that you will want your version to be internal.
|
||||
[System.Security.SecurityCritical]
|
||||
//[SecurityPermission(SecurityAction.Assert, UnmanagedCode = true)]
|
||||
protected internal void Persist(String name)
|
||||
{
|
||||
WriteLock();
|
||||
|
||||
try
|
||||
{
|
||||
AccessControlSections persistRules = GetAccessControlSectionsFromChanges();
|
||||
base.Persist(name, persistRules);
|
||||
OwnerModified = GroupModified = AuditRulesModified = AccessRulesModified = false;
|
||||
}
|
||||
finally
|
||||
{
|
||||
WriteUnlock();
|
||||
}
|
||||
}
|
||||
|
||||
public override Type AccessRightType
|
||||
{
|
||||
get
|
||||
{
|
||||
return typeof(PipeAccessRights);
|
||||
}
|
||||
}
|
||||
|
||||
public override Type AccessRuleType
|
||||
{
|
||||
get
|
||||
{
|
||||
return typeof(PipeAccessRule);
|
||||
}
|
||||
}
|
||||
|
||||
public override Type AuditRuleType
|
||||
{
|
||||
get
|
||||
{
|
||||
return typeof(PipeAuditRule);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
40
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipesAclExtensions.cs
vendored
Normal file
40
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipesAclExtensions.cs
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.IO;
|
||||
using System.Security.AccessControl;
|
||||
|
||||
namespace System.IO.Pipes
|
||||
{
|
||||
public static class PipesAclExtensions
|
||||
{
|
||||
[System.Security.SecurityCritical]
|
||||
public static PipeSecurity GetAccessControl(this PipeStream stream)
|
||||
{
|
||||
// PipeState can not be Closed and the Handle can not be null or closed
|
||||
var handle = stream.SafePipeHandle; // A non-null, open handle implies a non-closed PipeState.
|
||||
return new PipeSecurity(handle, AccessControlSections.Access | AccessControlSections.Owner | AccessControlSections.Group);
|
||||
}
|
||||
|
||||
[System.Security.SecurityCritical]
|
||||
public static void SetAccessControl(this PipeStream stream, PipeSecurity pipeSecurity)
|
||||
{
|
||||
// PipeState can not be Closed and the Handle can not be null or closed
|
||||
if (pipeSecurity == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(pipeSecurity));
|
||||
}
|
||||
|
||||
var handle = stream.SafePipeHandle; // A non-null, open handle implies a non-closed PipeState.
|
||||
|
||||
// NamedPipeClientStream: PipeState can not be WaitingToConnect or Broken. WaitingToConnect is covered by the SafePipeHandle check.
|
||||
if (stream is NamedPipeClientStream && !stream.IsConnected) // Pipe could also be WaitingToConnect, Broken, Disconnected, or Closed.
|
||||
{
|
||||
throw new InvalidOperationException(SR.InvalidOperation_PipeNotYetConnected);
|
||||
}
|
||||
|
||||
pipeSecurity.Persist(handle);
|
||||
}
|
||||
}
|
||||
}
|
24
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipesAclExtensions.net46.cs
vendored
Normal file
24
external/corefx/src/System.IO.Pipes.AccessControl/src/System/IO/PipesAclExtensions.net46.cs
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.IO;
|
||||
using System.Security.AccessControl;
|
||||
|
||||
namespace System.IO.Pipes
|
||||
{
|
||||
public static class PipesAclExtensions
|
||||
{
|
||||
[System.Security.SecurityCritical]
|
||||
public static PipeSecurity GetAccessControl(PipeStream stream)
|
||||
{
|
||||
return stream.GetAccessControl();
|
||||
}
|
||||
|
||||
[System.Security.SecurityCritical]
|
||||
public static void SetAccessControl(PipeStream stream, PipeSecurity pipeSecurity)
|
||||
{
|
||||
stream.SetAccessControl(pipeSecurity);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
|
||||
namespace System.IO.Pipes.Tests
|
||||
{
|
||||
public class AnonymousPipeTest_AclExtensions : PipeTest_AclExtensions
|
||||
{
|
||||
protected override ServerClientPair CreateServerClientPair()
|
||||
{
|
||||
ServerClientPair ret = new ServerClientPair();
|
||||
ret.readablePipe = new AnonymousPipeServerStream(PipeDirection.In);
|
||||
ret.writeablePipe = new AnonymousPipeClientStream(PipeDirection.Out, ((AnonymousPipeServerStream)ret.readablePipe).ClientSafePipeHandle);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
8
external/corefx/src/System.IO.Pipes.AccessControl/tests/Configurations.props
vendored
Normal file
8
external/corefx/src/System.IO.Pipes.AccessControl/tests/Configurations.props
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<BuildConfigurations>
|
||||
netstandard1.3-Windows_NT;
|
||||
</BuildConfigurations>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@@ -0,0 +1,91 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
|
||||
namespace System.IO.Pipes.Tests
|
||||
{
|
||||
public class NamedPipeTest_AclExtensions : PipeTest_AclExtensions
|
||||
{
|
||||
protected override ServerClientPair CreateServerClientPair()
|
||||
{
|
||||
ServerClientPair ret = new ServerClientPair();
|
||||
string pipeName = GetUniquePipeName();
|
||||
var writeablePipe = new NamedPipeServerStream(pipeName, PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
|
||||
var readablePipe = new NamedPipeClientStream(".", pipeName, PipeDirection.In, PipeOptions.Asynchronous);
|
||||
|
||||
Task clientConnect = readablePipe.ConnectAsync();
|
||||
writeablePipe.WaitForConnection();
|
||||
clientConnect.Wait();
|
||||
|
||||
ret.readablePipe = readablePipe;
|
||||
ret.writeablePipe = writeablePipe;
|
||||
return ret;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetAccessControl_NamedPipe_BeforeWaitingToConnect()
|
||||
{
|
||||
string pipeName = GetUniquePipeName();
|
||||
var server = new NamedPipeServerStream(pipeName, PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
|
||||
var client = new NamedPipeClientStream(".", pipeName, PipeDirection.In, PipeOptions.Asynchronous);
|
||||
|
||||
Assert.NotNull(server.GetAccessControl());
|
||||
server.SetAccessControl(new PipeSecurity());
|
||||
Assert.Throws<InvalidOperationException>(() => client.GetAccessControl());
|
||||
Assert.Throws<InvalidOperationException>(() => client.SetAccessControl(new PipeSecurity()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests that SetAccessControl on a Broken NamedPipeClientStream throws an Exception.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void GetAccessControl_NamedPipeClientStream_Broken()
|
||||
{
|
||||
string pipeName = GetUniquePipeName();
|
||||
var server = new NamedPipeServerStream(pipeName, PipeDirection.In, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
|
||||
var client = new NamedPipeClientStream(".", pipeName, PipeDirection.Out, PipeOptions.Asynchronous);
|
||||
|
||||
Task clientConnect = client.ConnectAsync();
|
||||
server.WaitForConnection();
|
||||
clientConnect.Wait();
|
||||
|
||||
Assert.NotNull(server.GetAccessControl());
|
||||
server.SetAccessControl(new PipeSecurity());
|
||||
Assert.NotNull(client.GetAccessControl());
|
||||
client.SetAccessControl(new PipeSecurity());
|
||||
|
||||
server.Dispose();
|
||||
Assert.Throws<IOException>(() => client.Write(new byte[] { 0 }, 0, 1)); // Sets the clients PipeState to Broken
|
||||
Assert.Throws<InvalidOperationException>(() => client.SetAccessControl(new PipeSecurity()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests that SetAccessControl on a Broken NamedPipeServerStream succeeds
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void GetAccessControl_NamedPipeServerStream_Broken()
|
||||
{
|
||||
string pipeName = GetUniquePipeName();
|
||||
var server = new NamedPipeServerStream(pipeName, PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
|
||||
var client = new NamedPipeClientStream(".", pipeName, PipeDirection.In, PipeOptions.Asynchronous);
|
||||
|
||||
Task clientConnect = client.ConnectAsync();
|
||||
server.WaitForConnection();
|
||||
clientConnect.Wait();
|
||||
|
||||
Assert.NotNull(server.GetAccessControl());
|
||||
server.SetAccessControl(new PipeSecurity());
|
||||
Assert.NotNull(client.GetAccessControl());
|
||||
client.SetAccessControl(new PipeSecurity());
|
||||
|
||||
client.Dispose();
|
||||
Assert.Throws<IOException>(() => server.Write(new byte[] { 0 }, 0, 1)); // Sets the servers PipeState to Broken
|
||||
server.SetAccessControl(new PipeSecurity());
|
||||
}
|
||||
}
|
||||
}
|
85
external/corefx/src/System.IO.Pipes.AccessControl/tests/PipeTest.AclExtensions.cs
vendored
Normal file
85
external/corefx/src/System.IO.Pipes.AccessControl/tests/PipeTest.AclExtensions.cs
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using Xunit;
|
||||
|
||||
namespace System.IO.Pipes.Tests
|
||||
{
|
||||
public abstract class PipeTest_AclExtensions : PipeTestBase
|
||||
{
|
||||
[Fact]
|
||||
public void GetAccessControl_NullPipeStream()
|
||||
{
|
||||
Assert.Throws<NullReferenceException>(() => PipesAclExtensions.GetAccessControl(null));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetAccessControl_DisposedStream()
|
||||
{
|
||||
using (var pair = CreateServerClientPair())
|
||||
{
|
||||
pair.readablePipe.Dispose();
|
||||
Assert.Throws<ObjectDisposedException>(() => pair.readablePipe.GetAccessControl());
|
||||
|
||||
pair.writeablePipe.Dispose();
|
||||
Assert.Throws<ObjectDisposedException>(() => pair.writeablePipe.GetAccessControl());
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetAccessControl_ConnectedStream()
|
||||
{
|
||||
using (var pair = CreateServerClientPair())
|
||||
{
|
||||
Assert.NotNull(pair.readablePipe.GetAccessControl());
|
||||
Assert.NotNull(pair.writeablePipe.GetAccessControl());
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetAccessControl_NullPipeStream()
|
||||
{
|
||||
Assert.Throws<NullReferenceException>(() => PipesAclExtensions.SetAccessControl(null, new PipeSecurity()));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetAccessControl_NullPipeSecurity()
|
||||
{
|
||||
using (var pair = CreateServerClientPair())
|
||||
{
|
||||
var stream = pair.readablePipe;
|
||||
Assert.Throws<ArgumentNullException>(() => PipesAclExtensions.SetAccessControl(stream, null));
|
||||
Assert.Throws<ArgumentNullException>(() => stream.SetAccessControl(null));
|
||||
|
||||
stream = pair.writeablePipe;
|
||||
Assert.Throws<ArgumentNullException>(() => PipesAclExtensions.SetAccessControl(stream, null));
|
||||
Assert.Throws<ArgumentNullException>(() => stream.SetAccessControl(null));
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetAccessControl_DisposedStream()
|
||||
{
|
||||
using (var pair = CreateServerClientPair())
|
||||
{
|
||||
pair.readablePipe.Dispose();
|
||||
Assert.Throws<ObjectDisposedException>(() => pair.readablePipe.SetAccessControl(new PipeSecurity()));
|
||||
|
||||
pair.writeablePipe.Dispose();
|
||||
Assert.Throws<ObjectDisposedException>(() => pair.writeablePipe.SetAccessControl(new PipeSecurity()));
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetAccessControl_ConnectedStream()
|
||||
{
|
||||
using (var pair = CreateServerClientPair())
|
||||
{
|
||||
var security = new PipeSecurity();
|
||||
pair.readablePipe.SetAccessControl(security);
|
||||
pair.writeablePipe.SetAccessControl(security);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user