From 95397306d634b10d644fa2c9bb4cf3b442072be5 Mon Sep 17 00:00:00 2001 From: Mikolaj Zalewski Date: Fri, 21 Sep 2007 19:17:11 -0700 Subject: [PATCH] advapi32: add some more rights constants for ConvertStringSecurityDescriptorToSecurityDescriptor --- dlls/advapi32/security.c | 48 +++++++++++++++++++++++++++++++++++++++- dlls/advapi32/tests/security.c | 3 --- include/iads.idl | 24 ++++++++++++++++++++ 3 files changed, 71 insertions(+), 4 deletions(-) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 4c41e0c..233b849 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -37,6 +37,10 @@ #include "winsvc.h" #include "aclapi.h" #include "advapi32_misc.h" +/* for ADS_RIGHT_* defines */ +#include "objbase.h" +#include "iads.h" + #include "wine/debug.h" #include "wine/unicode.h" @@ -246,11 +250,32 @@ static const WCHAR SDDL_READ_CONTROL[] static const WCHAR SDDL_WRITE_DAC[] = {'W','D',0}; static const WCHAR SDDL_WRITE_OWNER[] = {'W','O',0}; static const WCHAR SDDL_STANDARD_DELETE[] = {'S','D',0}; + +static const WCHAR SDDL_READ_PROPERTY[] = {'R','P',0}; +static const WCHAR SDDL_WRITE_PROPERTY[] = {'W','P',0}; +static const WCHAR SDDL_CREATE_CHILD[] = {'C','C',0}; +static const WCHAR SDDL_DELETE_CHILD[] = {'D','C',0}; +static const WCHAR SDDL_LIST_CHILDREN[] = {'L','C',0}; +static const WCHAR SDDL_SELF_WRITE[] = {'S','W',0}; +static const WCHAR SDDL_LIST_OBJECT[] = {'L','O',0}; +static const WCHAR SDDL_DELETE_TREE[] = {'D','T',0}; +static const WCHAR SDDL_CONTROL_ACCESS[] = {'C','R',0}; + +static const WCHAR SDDL_FILE_ALL[] = {'F','A',0}; +static const WCHAR SDDL_FILE_READ[] = {'F','R',0}; +static const WCHAR SDDL_FILE_WRITE[] = {'F','W',0}; +static const WCHAR SDDL_FILE_EXECUTE[] = {'F','X',0}; + +static const WCHAR SDDL_KEY_ALL[] = {'K','A',0}; +static const WCHAR SDDL_KEY_READ[] = {'K','R',0}; +static const WCHAR SDDL_KEY_WRITE[] = {'K','W',0}; +static const WCHAR SDDL_KEY_EXECUTE[] = {'K','X',0}; + static const WCHAR SDDL_GENERIC_ALL[] = {'G','A',0}; static const WCHAR SDDL_GENERIC_READ[] = {'G','R',0}; static const WCHAR SDDL_GENERIC_WRITE[] = {'G','W',0}; static const WCHAR SDDL_GENERIC_EXECUTE[] = {'G','X',0}; - + /* * ACE types */ @@ -3107,10 +3132,31 @@ static const ACEFLAG AceRights[] = { SDDL_GENERIC_READ, GENERIC_READ }, { SDDL_GENERIC_WRITE, GENERIC_WRITE }, { SDDL_GENERIC_EXECUTE, GENERIC_EXECUTE }, + { SDDL_READ_CONTROL, READ_CONTROL }, { SDDL_STANDARD_DELETE, DELETE }, { SDDL_WRITE_DAC, WRITE_DAC }, { SDDL_WRITE_OWNER, WRITE_OWNER }, + + { SDDL_READ_PROPERTY, ADS_RIGHT_DS_READ_PROP}, + { SDDL_WRITE_PROPERTY, ADS_RIGHT_DS_WRITE_PROP}, + { SDDL_CREATE_CHILD, ADS_RIGHT_DS_CREATE_CHILD}, + { SDDL_DELETE_CHILD, ADS_RIGHT_DS_DELETE_CHILD}, + { SDDL_LIST_CHILDREN, ADS_RIGHT_ACTRL_DS_LIST}, + { SDDL_SELF_WRITE, ADS_RIGHT_DS_SELF}, + { SDDL_LIST_OBJECT, ADS_RIGHT_DS_LIST_OBJECT}, + { SDDL_DELETE_TREE, ADS_RIGHT_DS_DELETE_TREE}, + { SDDL_CONTROL_ACCESS, ADS_RIGHT_DS_CONTROL_ACCESS}, + + { SDDL_FILE_ALL, FILE_ALL_ACCESS }, + { SDDL_FILE_READ, FILE_GENERIC_READ }, + { SDDL_FILE_WRITE, FILE_GENERIC_WRITE }, + { SDDL_FILE_EXECUTE, FILE_GENERIC_EXECUTE }, + + { SDDL_KEY_ALL, KEY_ALL_ACCESS }, + { SDDL_KEY_READ, KEY_READ }, + { SDDL_KEY_WRITE, KEY_WRITE }, + { SDDL_KEY_EXECUTE, KEY_EXECUTE }, { NULL, 0 }, }; diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 9756ca8..86c4c50 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -1848,19 +1848,16 @@ static void test_ConvertStringSecurityDe SetLastError(0xdeadbeef); ret = pConvertStringSecurityDescriptorToSecurityDescriptorA( "D:(A;;RPWPCCDCLCSWLODTCR;;;WD)", SDDL_REVISION_1, &pSD, NULL); - todo_wine ok(ret, "ConvertStringSecurityDescriptorToSecurityDescriptor failed with error %d\n", GetLastError()); LocalFree(pSD); SetLastError(0xdeadbeef); ret = pConvertStringSecurityDescriptorToSecurityDescriptorA( "D:(A;;FAFRFWFX;;;WD)", SDDL_REVISION_1, &pSD, NULL); - todo_wine ok(ret, "ConvertStringSecurityDescriptorToSecurityDescriptor failed with error %d\n", GetLastError()); LocalFree(pSD); SetLastError(0xdeadbeef); ret = pConvertStringSecurityDescriptorToSecurityDescriptorA( "D:(A;;KAKRKWKX;;;WD)", SDDL_REVISION_1, &pSD, NULL); - todo_wine ok(ret, "ConvertStringSecurityDescriptorToSecurityDescriptor failed with error %d\n", GetLastError()); LocalFree(pSD); SetLastError(0xdeadbeef); diff --git a/include/iads.idl b/include/iads.idl index 08cbfe8..299c285 100644 --- a/include/iads.idl +++ b/include/iads.idl @@ -18,6 +18,30 @@ import "oaidl.idl"; +typedef enum +{ + ADS_RIGHT_DS_CREATE_CHILD = 0x00000001, + ADS_RIGHT_DS_DELETE_CHILD = 0x00000002, + ADS_RIGHT_ACTRL_DS_LIST = 0x00000004, + ADS_RIGHT_DS_SELF = 0x00000008, + ADS_RIGHT_DS_READ_PROP = 0x00000010, + ADS_RIGHT_DS_WRITE_PROP = 0x00000020, + ADS_RIGHT_DS_DELETE_TREE = 0x00000040, + ADS_RIGHT_DS_LIST_OBJECT = 0x00000080, + ADS_RIGHT_DS_CONTROL_ACCESS = 0x00000100, + + ADS_RIGHT_DELTE = 0x00010000, + ADS_RIGHT_READ_CONTROL = 0x00020000, + ADS_RIGHT_WRITE_DAC = 0x00040000, + ADS_RIGHT_WRITE_OWNER = 0x00080000, + ADS_RIGHT_SYNCHRONIZE = 0x00100000, + ADS_RIGHT_ACCESS_SYSTEM_SECURITY = 0x00200000, + + ADS_RIGHT_GENERIC_ALL = 0x10000000, + ADS_RIGHT_GENERIC_EXECUTE = 0x20000000, + ADS_RIGHT_GENERIC_WRITE = 0x40000000, + ADS_RIGHT_GENERIC_READ = 0x80000000 +} ADS_RIGHTS_ENUM; /***************************************************************************** * IADsContainer interface -- 1.4.1