[PATCH] advapi32: add some more rights constants for ConvertStringSecurityDescriptorToSecurityDescriptor
Mikołaj Zalewski
mikolaj at zalewski.pl
Sat Sep 22 23:26:05 CDT 2007
---
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 "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[] = {'R','C',0};
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_ConvertStringSecurityDescriptor(void)
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..89957e4 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_DELETE = 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.4.2
--------------050204070005060204030101--
More information about the wine-patches
mailing list