internal void FromXml(SecurityDocument doc, int position, PolicyLevel level, bool allowInternalOnly) { if (doc == null) { throw new ArgumentNullException("doc"); } if (!doc.GetTagForElement(position).Equals("PolicyStatement")) { throw new ArgumentException(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_InvalidXMLElement"), (object)"PolicyStatement", (object)this.GetType().FullName)); } this.m_attributes = PolicyStatementAttribute.Nothing; string attributeForElement = doc.GetAttributeForElement(position, "Attributes"); if (attributeForElement != null) { this.m_attributes = (PolicyStatementAttribute)Enum.Parse(typeof(PolicyStatementAttribute), attributeForElement); } lock (this) { this.m_permSet = (PermissionSet)null; if (level != null) { string local_3 = doc.GetAttributeForElement(position, "PermissionSetName"); if (local_3 != null) { this.m_permSet = (PermissionSet)level.GetNamedPermissionSetInternal(local_3); if (this.m_permSet == null) { this.m_permSet = new PermissionSet(PermissionState.None); } } } if (this.m_permSet == null) { ArrayList local_4 = doc.GetChildrenPositionForElement(position); int local_5 = -1; for (int local_6 = 0; local_6 < local_4.Count; ++local_6) { if (doc.GetTagForElement((int)local_4[local_6]).Equals("PermissionSet")) { local_5 = (int)local_4[local_6]; } } if (local_5 == -1) { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidXML")); } string local_7 = doc.GetAttributeForElement(local_5, "class"); this.m_permSet = local_7 == null || !local_7.Equals("NamedPermissionSet") && !local_7.Equals("System.Security.NamedPermissionSet") ? new PermissionSet(PermissionState.None) : (PermissionSet) new NamedPermissionSet("DefaultName", PermissionState.None); this.m_permSet.FromXml(doc, local_5, allowInternalOnly); } if (this.m_permSet != null) { return; } this.m_permSet = new PermissionSet(PermissionState.None); } }
internal void FromXml(SecurityDocument doc, int position, PolicyLevel level, bool allowInternalOnly) { if (doc == null) { throw new ArgumentNullException("doc"); } if (!doc.GetTagForElement(position).Equals("PolicyStatement")) { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_InvalidXMLElement"), new object[] { "PolicyStatement", base.GetType().FullName })); } this.m_attributes = PolicyStatementAttribute.Nothing; string attributeForElement = doc.GetAttributeForElement(position, "Attributes"); if (attributeForElement != null) { this.m_attributes = (PolicyStatementAttribute)Enum.Parse(typeof(PolicyStatementAttribute), attributeForElement); } lock (this) { this.m_permSet = null; if (level != null) { string name = doc.GetAttributeForElement(position, "PermissionSetName"); if (name != null) { this.m_permSet = level.GetNamedPermissionSetInternal(name); if (this.m_permSet == null) { this.m_permSet = new System.Security.PermissionSet(PermissionState.None); } } } if (this.m_permSet == null) { ArrayList childrenPositionForElement = doc.GetChildrenPositionForElement(position); int num = -1; for (int i = 0; i < childrenPositionForElement.Count; i++) { if (doc.GetTagForElement((int)childrenPositionForElement[i]).Equals("PermissionSet")) { num = (int)childrenPositionForElement[i]; } } if (num == -1) { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidXML")); } string str3 = doc.GetAttributeForElement(num, "class"); if ((str3 != null) && (str3.Equals("NamedPermissionSet") || str3.Equals("System.Security.NamedPermissionSet"))) { this.m_permSet = new NamedPermissionSet("DefaultName", PermissionState.None); } else { this.m_permSet = new System.Security.PermissionSet(PermissionState.None); } this.m_permSet.FromXml(doc, num, allowInternalOnly); } if (this.m_permSet == null) { this.m_permSet = new System.Security.PermissionSet(PermissionState.None); } } }
internal void FromXml(SecurityDocument doc, int position, PolicyLevel level, bool allowInternalOnly) { if (doc == null) { throw new ArgumentNullException("doc"); } if (!doc.GetTagForElement(position).Equals("PolicyStatement")) { throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_InvalidXMLElement"), "PolicyStatement", this.GetType().FullName)); } m_attributes = (PolicyStatementAttribute)0; String strAttributes = doc.GetAttributeForElement(position, "Attributes"); if (strAttributes != null) { m_attributes = (PolicyStatementAttribute)Enum.Parse(typeof(PolicyStatementAttribute), strAttributes); } lock (this) { m_permSet = null; if (level != null) { String permSetName = doc.GetAttributeForElement(position, "PermissionSetName"); if (permSetName != null) { m_permSet = level.GetNamedPermissionSetInternal(permSetName); if (m_permSet == null) { m_permSet = new PermissionSet(PermissionState.None); } } } if (m_permSet == null) { // There is no provided level, it is not a named permission set, or // the named permission set doesn't exist in the provided level, // so just create the class through reflection and decode normally. ArrayList childPositions = doc.GetChildrenPositionForElement(position); int positionPermissionSet = -1; for (int i = 0; i < childPositions.Count; ++i) { if (doc.GetTagForElement((int)childPositions[i]).Equals("PermissionSet")) { positionPermissionSet = (int)childPositions[i]; } } if (positionPermissionSet != -1) { String className = doc.GetAttributeForElement(positionPermissionSet, "class"); if (className != null && (className.Equals("NamedPermissionSet") || className.Equals("System.Security.NamedPermissionSet"))) { m_permSet = new NamedPermissionSet("DefaultName", PermissionState.None); } else { m_permSet = new PermissionSet(PermissionState.None); } m_permSet.FromXml(doc, positionPermissionSet, allowInternalOnly); } else { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidXML")); } } if (m_permSet == null) { m_permSet = new PermissionSet(PermissionState.None); } } }