summaryrefslogtreecommitdiff
path: root/src/vm/customattribute.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/customattribute.cpp')
-rw-r--r--src/vm/customattribute.cpp87
1 files changed, 0 insertions, 87 deletions
diff --git a/src/vm/customattribute.cpp b/src/vm/customattribute.cpp
index a83815f8bf..5b679548db 100644
--- a/src/vm/customattribute.cpp
+++ b/src/vm/customattribute.cpp
@@ -906,93 +906,6 @@ FCIMPL5(VOID, COMCustomAttribute::ParseAttributeUsageAttribute, PVOID pData, ULO
}
FCIMPLEND
-#ifdef FEATURE_CAS_POLICY
-FCIMPL4(VOID, COMCustomAttribute::GetSecurityAttributes, ReflectModuleBaseObject *pModuleUNSAFE, DWORD tkToken, CLR_BOOL fAssembly, PTRARRAYREF* ppArray)
-{
- FCALL_CONTRACT;
-
- OBJECTREF throwable = NULL;
- REFLECTMODULEBASEREF refModule = (REFLECTMODULEBASEREF)ObjectToOBJECTREF(pModuleUNSAFE);
-
- if(refModule == NULL)
- FCThrowResVoid(kArgumentNullException, W("Arg_InvalidHandle"));
-
- Module *pModule = refModule->GetModule();
-
- HELPER_METHOD_FRAME_BEGIN_2(throwable, refModule);
- {
- IMDInternalImport* pScope = pModule->GetMDImport();
-
- DWORD action;
-
- CORSEC_ATTRSET_ARRAY aAttrset;
- DWORD dwCount = 0;
- for(action = 1; action <= dclMaximumValue; action++)
- {
- // We cannot use IsAssemblyDclAction(action) != fAssembly because CLR_BOOL is defined
- // as BYTE in PAL so it might contain a value other than 0 or 1.
- if (IsNGenOnlyDclAction(action) || IsAssemblyDclAction(action) == !fAssembly)
- continue;
-
- HENUMInternalHolder hEnum(pScope);
- if (!hEnum.EnumPermissionSetsInit(tkToken, (CorDeclSecurity)action))
- continue;
-
- mdPermission tkPerm;
- BYTE* pbBlob;
- ULONG cbBlob;
- DWORD dwAction;
-
- while (pScope->EnumNext(&hEnum, &tkPerm))
- {
- IfFailThrow(pScope->GetPermissionSetProps(
- tkPerm,
- &dwAction,
- (void const **)&pbBlob,
- &cbBlob));
-
- CORSEC_ATTRSET* pAttrSet = &*aAttrset.Append();
- IfFailThrow(BlobToAttributeSet(pbBlob, cbBlob, pAttrSet, dwAction));
-
- dwCount += pAttrSet->dwAttrCount;
- }
- }
-
- *ppArray = (PTRARRAYREF)AllocateObjectArray(dwCount, g_pObjectClass);
-
- CQuickBytes qb;
-
- COUNT_T c = 0;
- for (COUNT_T i = 0; i < aAttrset.GetCount(); i ++)
- {
- CORSEC_ATTRSET& attrset = aAttrset[i];
- OBJECTREF* attrArray = (OBJECTREF*)qb.AllocThrows(attrset.dwAttrCount * sizeof(OBJECTREF));
- memset(attrArray, 0, attrset.dwAttrCount * sizeof(OBJECTREF));
- {
- // Convert to a managed array of attribute objects
- DWORD dwErrorIndex;
- HRESULT hr = E_FAIL;
- GCPROTECT_ARRAY_BEGIN(*attrArray, attrset.dwAttrCount);
- // This is very tricky.
- // We have a GCFrame local here. The local goes out of scope beyond for loop. The stack location of the local
- // is then reused by other variables, and the content in GCFrame may be changed. But the Frame is still chained
- // on our Thread object.
- // If exception is thrown before we pop our frame chain, we will have corrupted frame chain.
- hr = SecurityAttributes::AttributeSetToManaged(attrArray, &attrset, &throwable, &dwErrorIndex, true);
- GCPROTECT_END();
- if (FAILED(hr))
- COMPlusThrowHR(hr);
-
- for (COUNT_T j = 0; j < attrset.dwAttrCount; j ++)
- (*ppArray)->SetAt(c++, attrArray[j]);
- }
-
- }
- }
- HELPER_METHOD_FRAME_END();
-}
-FCIMPLEND
-#endif // FEATURE_CAS_POLICY
FCIMPL7(void, COMCustomAttribute::GetPropertyOrFieldData, ReflectModuleBaseObject *pModuleUNSAFE, BYTE** ppBlobStart, BYTE* pBlobEnd, STRINGREF* pName, CLR_BOOL* pbIsProperty, OBJECTREF* pType, OBJECTREF* value)
{