Update of /cvsroot/pywin32/pywin32/win32/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32413/win32/src
Modified Files:
PyACL.cpp PySecurityObjects.h PyWinTypesmodule.cpp
Log Message:
Add AddMandatoryAce, and support for SYSTEM_MANDATORY_LABEL_ACE_TYPE
Index: PySecurityObjects.h
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/src/PySecurityObjects.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** PySecurityObjects.h 24 May 2007 06:01:05 -0000 1.12
--- PySecurityObjects.h 23 Jul 2007 05:16:05 -0000 1.13
***************
*** 14,17 ****
--- 14,18 ----
extern addaceexfunc addaccessallowedaceex;
extern addaceexfunc addaccessdeniedaceex;
+ extern addaceexfunc addmandatoryace;
extern addobjectacefunc addaccessallowedobjectace;
extern addobjectacefunc addaccessdeniedobjectace;
***************
*** 188,191 ****
--- 189,193 ----
static PyObject *AddAccessDeniedAce(PyObject *self, PyObject *args);
static PyObject *AddAccessDeniedAceEx(PyObject *self, PyObject *args);
+ static PyObject *AddMandatoryAce(PyObject *self, PyObject *args);
static PyObject *AddAccessDeniedObjectAce(PyObject *self, PyObject *args);
static PyObject *AddAuditAccessAce(PyObject *self, PyObject *args);
Index: PyWinTypesmodule.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/src/PyWinTypesmodule.cpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -d -r1.31 -r1.32
*** PyWinTypesmodule.cpp 13 Jul 2007 03:00:57 -0000 1.31
--- PyWinTypesmodule.cpp 23 Jul 2007 05:16:05 -0000 1.32
***************
*** 888,891 ****
--- 888,894 ----
if (fp)
addaccessallowedaceex=(addaceexfunc)(fp);
+ fp=GetProcAddress(hmodule,"AddMandatoryAce");
+ if (fp)
+ addmandatoryace=(addaceexfunc)(fp);
fp=GetProcAddress(hmodule,"AddAccessAllowedObjectAce");
if (fp)
Index: PyACL.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/src/PyACL.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** PyACL.cpp 24 May 2007 06:01:05 -0000 1.16
--- PyACL.cpp 23 Jul 2007 05:16:05 -0000 1.17
***************
*** 16,19 ****
--- 16,20 ----
addaceexfunc addaccessallowedaceex=NULL;
addaceexfunc addaccessdeniedaceex=NULL;
+ addaceexfunc addmandatoryace=NULL;
addobjectacefunc addaccessallowedobjectace=NULL;
addobjectacefunc addaccessdeniedobjectace=NULL;
***************
*** 560,563 ****
--- 561,580 ----
}
+ // @pymethod |PyACL|AddMandatoryAce|Adds a mandatory integrity level ACE to a SACL
+ PyObject *PyACL::AddMandatoryAce(PyObject *self, PyObject *args)
+ {
+ DWORD access,revision,aceflags;
+ PyObject *obSID;
+ // @pyparm int|AceRevision||ACL_REVISION or ACL_REVISION_DS
+ // @pyparm int|AceFlags||Combination of ACE inheritance flags (CONTAINER_INHERIT_ACE,INHERIT_ONLY_ACE,INHERITED_ACE,NO_PROPAGATE_INHERIT_ACE, and OBJECT_INHERIT_ACE)
+ // @pyparm int|MandatoryPolicy||Access policy for processes with lower integrity level, combination of SYSTEM_MANDATORY_LABEL_* flags
+ // @pyparm <o PySID>|LabelSid||Integrity level SID. This can be created using CreateWellKnownSid with Win*LabelSid.
+ // <nl>Also can be constructed manually using SECURITY_MANDATORY_LABEL_AUTHORITY and a SECURITY_MANDATORY_*_RID
+ if (!PyArg_ParseTuple(args, "kkkO:AddMandatoryAce", &revision, &aceflags, &access, &obSID))
+ return NULL;
+ return addaceex(addmandatoryace, "AddMandatoryAce", (PyACL *) self,
+ revision, aceflags, access, obSID);
+ }
+
PyObject * addobjectace(addobjectacefunc addfunc, CHAR *funcname, PyACL *This,
DWORD revision, DWORD aceflags, DWORD access,
***************
*** 923,927 ****
case ACCESS_ALLOWED_ACE_TYPE:
case ACCESS_DENIED_ACE_TYPE:
! case SYSTEM_AUDIT_ACE_TYPE:{
ACCESS_ALLOWED_ACE *pAce=(ACCESS_ALLOWED_ACE *)p;
return Py_BuildValue("(ll)lN", pAceHeader->AceType, pAceHeader->AceFlags, pAce->Mask, PyWinObject_FromSID((PSID)(&pAce->SidStart)));
--- 940,948 ----
case ACCESS_ALLOWED_ACE_TYPE:
case ACCESS_DENIED_ACE_TYPE:
! case SYSTEM_AUDIT_ACE_TYPE:
! #ifdef _WIN32_WINNT_LONGHORN
! case SYSTEM_MANDATORY_LABEL_ACE_TYPE:
! #endif
! {
ACCESS_ALLOWED_ACE *pAce=(ACCESS_ALLOWED_ACE *)p;
return Py_BuildValue("(ll)lN", pAceHeader->AceType, pAceHeader->AceFlags, pAce->Mask, PyWinObject_FromSID((PSID)(&pAce->SidStart)));
***************
*** 1094,1097 ****
--- 1115,1119 ----
{"AddAccessDeniedAce", PyACL::AddAccessDeniedAce, 1}, // @pymeth AddAccessDeniedAce|Adds an access-denied ACE to an ACL object.
{"AddAccessDeniedAceEx", PyACL::AddAccessDeniedAceEx, 1}, // @pymeth AddAccessDeniedAceEx|Adds an access-denied ACE to an ACL object
+ {"AddMandatoryAce", PyACL::AddMandatoryAce, 1}, // @pymeth AddMandatoryAce|Adds a mandatory integrity level ACE to a SACL
{"AddAccessDeniedObjectAce", PyACL::AddAccessDeniedObjectAce, 1}, // @pymeth AddAccessAllowedObjectAce|Adds an ACCESS_DENIED_OBJECT_ACE to the ACL
{"AddAuditAccessAce", PyACL::AddAuditAccessAce, 1}, // @pymeth AddAuditAccessAce|Adds an audit entry to a system access control list (SACL)
|