[SCM] Samba Shared Repository - branch master updated
Günther Deschner
gd at samba.org
Fri Apr 9 05:57:33 MDT 2010
The branch, master has been updated
via 5d04aad... s4-smbtorture: Fix winreg test after keytype renameing.
via 35ef609... s4-winreg: Fix dcesrv_winreg_CreateKey after rename.
via faf2d49... s3: re-run make samba3-idl.
via eda0aa4... winreg: rename winreg_KeyType to winreg_KeyOptions.
via 8c593f6... s4-smbtorture: when creating winreg-symlinks during a test, it is very wise to make them volatile.
via 299a6ff... s4-smbtorture: winreg keytype options is a bitmask.
via ab27c6d... s3: re-run make samba3-idl.
via 8805490... winreg: keytype options is a bitmask.
via bc92899... s4-smbtorture: more work on registry REG_LINK (in-registry symlinks) test.
from 92a051e... s4-waf: only enable the python uuid module if python <= 2.4
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 5d04aadcb90c0272a2fe03a85ac2f91b99845c32
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 13:51:42 2010 +0200
s4-smbtorture: Fix winreg test after keytype renameing.
Guenther
commit 35ef60918ba5f9a39ce8d516b65ae5fd56e1c65f
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 13:50:34 2010 +0200
s4-winreg: Fix dcesrv_winreg_CreateKey after rename.
Guenther
commit faf2d4988bd0eb9390b04b1ea76fb059d5495185
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 13:50:10 2010 +0200
s3: re-run make samba3-idl.
Guenther
commit eda0aa4b9135a5a6bf7713276beebbbbecc56da9
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 13:49:28 2010 +0200
winreg: rename winreg_KeyType to winreg_KeyOptions.
Guenther
commit 8c593f63557d056bd80b4ce0b0d5e04f5a56a4bc
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 12:40:36 2010 +0200
s4-smbtorture: when creating winreg-symlinks during a test, it is very wise to make them volatile.
Guenther
commit 299a6ffe9eb88b5907ca98ad06f9d6ac253945e0
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 12:26:06 2010 +0200
s4-smbtorture: winreg keytype options is a bitmask.
Guenther
commit ab27c6d138277a01a40c3f6dd735512d466ea722
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 12:24:59 2010 +0200
s3: re-run make samba3-idl.
Guenther
commit 8805490853f449dc2d71e80d5052a6615740c2a2
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 12:24:18 2010 +0200
winreg: keytype options is a bitmask.
Guenther
commit bc9289995a4d338644aec8a504e284ac65d73c53
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 9 01:07:39 2010 +0200
s4-smbtorture: more work on registry REG_LINK (in-registry symlinks) test.
Guenther
-----------------------------------------------------------------------
Summary of changes:
librpc/gen_ndr/cli_winreg.c | 8 ++--
librpc/gen_ndr/cli_winreg.h | 8 ++--
librpc/gen_ndr/ndr_winreg.c | 38 ++++++++++----------
librpc/gen_ndr/ndr_winreg.h | 2 +-
librpc/gen_ndr/winreg.h | 24 ++++--------
librpc/idl/winreg.idl | 16 +++++----
source4/rpc_server/winreg/rpc_winreg.c | 2 +-
source4/torture/rpc/winreg.c | 60 +++++++++++++++++++------------
8 files changed, 83 insertions(+), 75 deletions(-)
Changeset truncated at 500 lines:
diff --git a/librpc/gen_ndr/cli_winreg.c b/librpc/gen_ndr/cli_winreg.c
index 57e78a7..208ca66 100644
--- a/librpc/gen_ndr/cli_winreg.c
+++ b/librpc/gen_ndr/cli_winreg.c
@@ -939,7 +939,7 @@ struct tevent_req *rpccli_winreg_CreateKey_send(TALLOC_CTX *mem_ctx,
struct policy_handle *_handle /* [in] [ref] */,
struct winreg_String _name /* [in] */,
struct winreg_String _keyclass /* [in] */,
- enum winreg_KeyType _options /* [in] */,
+ uint32_t _options /* [in] */,
uint32_t _access_mask /* [in] */,
struct winreg_SecBuf *_secdesc /* [in] [unique] */,
struct policy_handle *_new_handle /* [out] [ref] */,
@@ -1058,7 +1058,7 @@ NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli,
struct policy_handle *handle /* [in] [ref] */,
struct winreg_String name /* [in] */,
struct winreg_String keyclass /* [in] */,
- enum winreg_KeyType options /* [in] */,
+ uint32_t options /* [in] */,
uint32_t access_mask /* [in] */,
struct winreg_SecBuf *secdesc /* [in] [unique] */,
struct policy_handle *new_handle /* [out] [ref] */,
@@ -2388,7 +2388,7 @@ struct tevent_req *rpccli_winreg_OpenKey_send(TALLOC_CTX *mem_ctx,
struct rpc_pipe_client *cli,
struct policy_handle *_parent_handle /* [in] [ref] */,
struct winreg_String _keyname /* [in] */,
- enum winreg_KeyType _options /* [in] */,
+ uint32_t _options /* [in] */,
uint32_t _access_mask /* [in] */,
struct policy_handle *_handle /* [out] [ref] */)
{
@@ -2497,7 +2497,7 @@ NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
struct policy_handle *parent_handle /* [in] [ref] */,
struct winreg_String keyname /* [in] */,
- enum winreg_KeyType options /* [in] */,
+ uint32_t options /* [in] */,
uint32_t access_mask /* [in] */,
struct policy_handle *handle /* [out] [ref] */,
WERROR *werror)
diff --git a/librpc/gen_ndr/cli_winreg.h b/librpc/gen_ndr/cli_winreg.h
index 670958e..4ed75fd 100644
--- a/librpc/gen_ndr/cli_winreg.h
+++ b/librpc/gen_ndr/cli_winreg.h
@@ -93,7 +93,7 @@ struct tevent_req *rpccli_winreg_CreateKey_send(TALLOC_CTX *mem_ctx,
struct policy_handle *_handle /* [in] [ref] */,
struct winreg_String _name /* [in] */,
struct winreg_String _keyclass /* [in] */,
- enum winreg_KeyType _options /* [in] */,
+ uint32_t _options /* [in] */,
uint32_t _access_mask /* [in] */,
struct winreg_SecBuf *_secdesc /* [in] [unique] */,
struct policy_handle *_new_handle /* [out] [ref] */,
@@ -106,7 +106,7 @@ NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli,
struct policy_handle *handle /* [in] [ref] */,
struct winreg_String name /* [in] */,
struct winreg_String keyclass /* [in] */,
- enum winreg_KeyType options /* [in] */,
+ uint32_t options /* [in] */,
uint32_t access_mask /* [in] */,
struct winreg_SecBuf *secdesc /* [in] [unique] */,
struct policy_handle *new_handle /* [out] [ref] */,
@@ -249,7 +249,7 @@ struct tevent_req *rpccli_winreg_OpenKey_send(TALLOC_CTX *mem_ctx,
struct rpc_pipe_client *cli,
struct policy_handle *_parent_handle /* [in] [ref] */,
struct winreg_String _keyname /* [in] */,
- enum winreg_KeyType _options /* [in] */,
+ uint32_t _options /* [in] */,
uint32_t _access_mask /* [in] */,
struct policy_handle *_handle /* [out] [ref] */);
NTSTATUS rpccli_winreg_OpenKey_recv(struct tevent_req *req,
@@ -259,7 +259,7 @@ NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
struct policy_handle *parent_handle /* [in] [ref] */,
struct winreg_String keyname /* [in] */,
- enum winreg_KeyType options /* [in] */,
+ uint32_t options /* [in] */,
uint32_t access_mask /* [in] */,
struct policy_handle *handle /* [out] [ref] */,
WERROR *werror);
diff --git a/librpc/gen_ndr/ndr_winreg.c b/librpc/gen_ndr/ndr_winreg.c
index fcb65d4..964b109 100644
--- a/librpc/gen_ndr/ndr_winreg.c
+++ b/librpc/gen_ndr/ndr_winreg.c
@@ -217,30 +217,30 @@ _PUBLIC_ void ndr_print_winreg_SecBuf(struct ndr_print *ndr, const char *name, c
ndr->depth--;
}
-static enum ndr_err_code ndr_push_winreg_KeyType(struct ndr_push *ndr, int ndr_flags, enum winreg_KeyType r)
+static enum ndr_err_code ndr_push_winreg_KeyOptions(struct ndr_push *ndr, int ndr_flags, uint32_t r)
{
- NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
return NDR_ERR_SUCCESS;
}
-static enum ndr_err_code ndr_pull_winreg_KeyType(struct ndr_pull *ndr, int ndr_flags, enum winreg_KeyType *r)
+static enum ndr_err_code ndr_pull_winreg_KeyOptions(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
{
uint32_t v;
- NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
*r = v;
return NDR_ERR_SUCCESS;
}
-_PUBLIC_ void ndr_print_winreg_KeyType(struct ndr_print *ndr, const char *name, enum winreg_KeyType r)
+_PUBLIC_ void ndr_print_winreg_KeyOptions(struct ndr_print *ndr, const char *name, uint32_t r)
{
- const char *val = NULL;
-
- switch (r) {
- case REG_KEYTYPE_NON_VOLATILE: val = "REG_KEYTYPE_NON_VOLATILE"; break;
- case REG_KEYTYPE_VOLATILE: val = "REG_KEYTYPE_VOLATILE"; break;
- case REG_KEYTYPE_SYMLINK: val = "REG_KEYTYPE_SYMLINK"; break;
- }
- ndr_print_enum(ndr, name, "ENUM", val, r);
+ ndr_print_uint32(ndr, name, r);
+ ndr->depth++;
+ ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_OPTION_NON_VOLATILE", REG_OPTION_NON_VOLATILE, r);
+ ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_OPTION_VOLATILE", REG_OPTION_VOLATILE, r);
+ ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_OPTION_CREATE_LINK", REG_OPTION_CREATE_LINK, r);
+ ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_OPTION_BACKUP_RESTORE", REG_OPTION_BACKUP_RESTORE, r);
+ ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_OPTION_OPEN_LINK", REG_OPTION_OPEN_LINK, r);
+ ndr->depth--;
}
static enum ndr_err_code ndr_push_winreg_CreateAction(struct ndr_push *ndr, int ndr_flags, enum winreg_CreateAction r)
@@ -1067,7 +1067,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_winreg_CreateKey(struct ndr_push *ndr, int f
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyclass));
- NDR_CHECK(ndr_push_winreg_KeyType(ndr, NDR_SCALARS, r->in.options));
+ NDR_CHECK(ndr_push_winreg_KeyOptions(ndr, NDR_SCALARS, r->in.options));
NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.secdesc));
if (r->in.secdesc) {
@@ -1112,7 +1112,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_CreateKey(struct ndr_pull *ndr, int f
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyclass));
- NDR_CHECK(ndr_pull_winreg_KeyType(ndr, NDR_SCALARS, &r->in.options));
+ NDR_CHECK(ndr_pull_winreg_KeyOptions(ndr, NDR_SCALARS, &r->in.options));
NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
if (_ptr_secdesc) {
@@ -1182,7 +1182,7 @@ _PUBLIC_ void ndr_print_winreg_CreateKey(struct ndr_print *ndr, const char *name
ndr->depth--;
ndr_print_winreg_String(ndr, "name", &r->in.name);
ndr_print_winreg_String(ndr, "keyclass", &r->in.keyclass);
- ndr_print_winreg_KeyType(ndr, "options", r->in.options);
+ ndr_print_winreg_KeyOptions(ndr, "options", r->in.options);
ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
ndr_print_ptr(ndr, "secdesc", r->in.secdesc);
ndr->depth++;
@@ -2179,7 +2179,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_winreg_OpenKey(struct ndr_push *ndr, int fla
}
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.parent_handle));
NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyname));
- NDR_CHECK(ndr_push_winreg_KeyType(ndr, NDR_SCALARS, r->in.options));
+ NDR_CHECK(ndr_push_winreg_KeyOptions(ndr, NDR_SCALARS, r->in.options));
NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
}
if (flags & NDR_OUT) {
@@ -2207,7 +2207,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_winreg_OpenKey(struct ndr_pull *ndr, int fla
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.parent_handle));
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parent_handle_0, LIBNDR_FLAG_REF_ALLOC);
NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyname));
- NDR_CHECK(ndr_pull_winreg_KeyType(ndr, NDR_SCALARS, &r->in.options));
+ NDR_CHECK(ndr_pull_winreg_KeyOptions(ndr, NDR_SCALARS, &r->in.options));
NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
NDR_PULL_ALLOC(ndr, r->out.handle);
ZERO_STRUCTP(r->out.handle);
@@ -2240,7 +2240,7 @@ _PUBLIC_ void ndr_print_winreg_OpenKey(struct ndr_print *ndr, const char *name,
ndr_print_policy_handle(ndr, "parent_handle", r->in.parent_handle);
ndr->depth--;
ndr_print_winreg_String(ndr, "keyname", &r->in.keyname);
- ndr_print_winreg_KeyType(ndr, "options", r->in.options);
+ ndr_print_winreg_KeyOptions(ndr, "options", r->in.options);
ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
ndr->depth--;
}
diff --git a/librpc/gen_ndr/ndr_winreg.h b/librpc/gen_ndr/ndr_winreg.h
index 39f10e2..c16e2fd 100644
--- a/librpc/gen_ndr/ndr_winreg.h
+++ b/librpc/gen_ndr/ndr_winreg.h
@@ -90,7 +90,7 @@ enum ndr_err_code ndr_pull_winreg_String(struct ndr_pull *ndr, int ndr_flags, st
void ndr_print_winreg_String(struct ndr_print *ndr, const char *name, const struct winreg_String *r);
void ndr_print_KeySecurityData(struct ndr_print *ndr, const char *name, const struct KeySecurityData *r);
void ndr_print_winreg_SecBuf(struct ndr_print *ndr, const char *name, const struct winreg_SecBuf *r);
-void ndr_print_winreg_KeyType(struct ndr_print *ndr, const char *name, enum winreg_KeyType r);
+void ndr_print_winreg_KeyOptions(struct ndr_print *ndr, const char *name, uint32_t r);
void ndr_print_winreg_CreateAction(struct ndr_print *ndr, const char *name, enum winreg_CreateAction r);
void ndr_print_winreg_StringBuf(struct ndr_print *ndr, const char *name, const struct winreg_StringBuf *r);
void ndr_print_winreg_ValNameBuf(struct ndr_print *ndr, const char *name, const struct winreg_ValNameBuf *r);
diff --git a/librpc/gen_ndr/winreg.h b/librpc/gen_ndr/winreg.h
index aa05148..c0e13d0 100644
--- a/librpc/gen_ndr/winreg.h
+++ b/librpc/gen_ndr/winreg.h
@@ -42,20 +42,12 @@ struct winreg_SecBuf {
uint8_t inherit;
};
-enum winreg_KeyType
-#ifndef USE_UINT_ENUMS
- {
- REG_KEYTYPE_NON_VOLATILE=(int)(0x00000000),
- REG_KEYTYPE_VOLATILE=(int)(0x00000001),
- REG_KEYTYPE_SYMLINK=(int)(0x00000002)
-}
-#else
- { __donnot_use_enum_winreg_KeyType=0x7FFFFFFF}
-#define REG_KEYTYPE_NON_VOLATILE ( 0x00000000 )
-#define REG_KEYTYPE_VOLATILE ( 0x00000001 )
-#define REG_KEYTYPE_SYMLINK ( 0x00000002 )
-#endif
-;
+/* bitmap winreg_KeyOptions */
+#define REG_OPTION_NON_VOLATILE ( 0x00000000 )
+#define REG_OPTION_VOLATILE ( 0x00000001 )
+#define REG_OPTION_CREATE_LINK ( 0x00000002 )
+#define REG_OPTION_BACKUP_RESTORE ( 0x00000004 )
+#define REG_OPTION_OPEN_LINK ( 0x00000008 )
enum winreg_CreateAction
#ifndef USE_UINT_ENUMS
@@ -192,7 +184,7 @@ struct winreg_CreateKey {
struct policy_handle *handle;/* [ref] */
struct winreg_String name;
struct winreg_String keyclass;
- enum winreg_KeyType options;
+ uint32_t options;
uint32_t access_mask;
struct winreg_SecBuf *secdesc;/* [unique] */
enum winreg_CreateAction *action_taken;/* [unique] */
@@ -338,7 +330,7 @@ struct winreg_OpenKey {
struct {
struct policy_handle *parent_handle;/* [ref] */
struct winreg_String keyname;
- enum winreg_KeyType options;
+ uint32_t options;
uint32_t access_mask;
} in;
diff --git a/librpc/idl/winreg.idl b/librpc/idl/winreg.idl
index bb0870c..349018a 100644
--- a/librpc/idl/winreg.idl
+++ b/librpc/idl/winreg.idl
@@ -112,11 +112,13 @@ import "lsa.idl", "security.idl", "misc.idl";
boolean8 inherit;
} winreg_SecBuf;
- typedef [v1_enum] enum {
- REG_KEYTYPE_NON_VOLATILE = 0x00000000,
- REG_KEYTYPE_VOLATILE = 0x00000001,
- REG_KEYTYPE_SYMLINK = 0x00000002
- } winreg_KeyType;
+ typedef [bitmap32bit] bitmap {
+ REG_OPTION_NON_VOLATILE = 0x00000000,
+ REG_OPTION_VOLATILE = 0x00000001,
+ REG_OPTION_CREATE_LINK = 0x00000002,
+ REG_OPTION_BACKUP_RESTORE = 0x00000004,
+ REG_OPTION_OPEN_LINK = 0x00000008
+ } winreg_KeyOptions;
typedef [v1_enum] enum {
REG_ACTION_NONE = 0, /* used by caller */
@@ -128,7 +130,7 @@ import "lsa.idl", "security.idl", "misc.idl";
[in,ref] policy_handle *handle,
[in] winreg_String name,
[in] winreg_String keyclass,
- [in] winreg_KeyType options,
+ [in] winreg_KeyOptions options,
[in] winreg_AccessMask access_mask,
[in,unique] winreg_SecBuf *secdesc,
[out,ref] policy_handle *new_handle,
@@ -236,7 +238,7 @@ import "lsa.idl", "security.idl", "misc.idl";
[public] WERROR winreg_OpenKey(
[in,ref] policy_handle *parent_handle,
[in] winreg_String keyname,
- [in] winreg_KeyType options,
+ [in] winreg_KeyOptions options,
[in] winreg_AccessMask access_mask,
[out,ref] policy_handle *handle
);
diff --git a/source4/rpc_server/winreg/rpc_winreg.c b/source4/rpc_server/winreg/rpc_winreg.c
index af67167..cfaee09 100644
--- a/source4/rpc_server/winreg/rpc_winreg.c
+++ b/source4/rpc_server/winreg/rpc_winreg.c
@@ -128,7 +128,7 @@ static WERROR dcesrv_winreg_CreateKey(struct dcesrv_call_state *dce_call,
case SECURITY_SYSTEM:
case SECURITY_ADMINISTRATOR:
/* we support only non volatile keys */
- if (r->in.options != REG_KEYTYPE_NON_VOLATILE) {
+ if (r->in.options != REG_OPTION_NON_VOLATILE) {
return WERR_NOT_SUPPORTED;
}
diff --git a/source4/torture/rpc/winreg.c b/source4/torture/rpc/winreg.c
index 8b57dd8..ba82e88 100644
--- a/source4/torture/rpc/winreg.c
+++ b/source4/torture/rpc/winreg.c
@@ -114,7 +114,7 @@ static bool test_CreateKey_opts(struct torture_context *tctx,
struct policy_handle *handle,
const char *name,
const char *kclass,
- enum winreg_KeyType options,
+ uint32_t options,
uint32_t access_mask,
struct winreg_SecBuf *secdesc,
WERROR expected_result,
@@ -159,7 +159,7 @@ static bool test_CreateKey(struct dcerpc_binding_handle *b,
const char *kclass)
{
return test_CreateKey_opts(tctx, b, handle, name, kclass,
- REG_KEYTYPE_NON_VOLATILE,
+ REG_OPTION_NON_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
NULL, /* secdesc */
WERR_OK,
@@ -393,7 +393,7 @@ static bool test_OpenKey_opts(struct torture_context *tctx,
struct dcerpc_binding_handle *b,
struct policy_handle *hive_handle,
const char *keyname,
- enum winreg_KeyType options,
+ uint32_t options,
uint32_t access_mask,
struct policy_handle *key_handle,
WERROR expected_result)
@@ -422,7 +422,7 @@ static bool test_OpenKey(struct dcerpc_binding_handle *b,
const char *keyname, struct policy_handle *key_handle)
{
return test_OpenKey_opts(tctx, b, hive_handle, keyname,
- REG_KEYTYPE_NON_VOLATILE,
+ REG_OPTION_NON_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
key_handle,
WERR_OK);
@@ -504,7 +504,7 @@ static bool _test_SecurityDescriptor(struct dcerpc_pipe *p,
torture_assert(tctx,
test_OpenKey_opts(tctx, b, handle, key,
- REG_KEYTYPE_NON_VOLATILE,
+ REG_OPTION_NON_VOLATILE,
access_mask,
&new_handle,
open_werr),
@@ -610,7 +610,7 @@ static bool _test_sacl_trustee_present(struct dcerpc_pipe *p,
torture_assert(tctx,
test_OpenKey_opts(tctx, b, handle, key,
- REG_KEYTYPE_NON_VOLATILE,
+ REG_OPTION_NON_VOLATILE,
SEC_FLAG_SYSTEM_SECURITY,
&new_handle,
WERR_OK),
@@ -1120,7 +1120,7 @@ static bool test_SetSecurityDescriptor_SecInfo(struct dcerpc_pipe *p,
torture_assert(tctx,
test_OpenKey_opts(tctx, b, handle, key,
- REG_KEYTYPE_NON_VOLATILE,
+ REG_OPTION_NON_VOLATILE,
access_mask,
&new_handle,
WERR_OK),
@@ -2092,7 +2092,7 @@ static bool test_HKLM_wellknown(struct torture_context *tctx,
if (torture_setting_bool(tctx, "samba3", false)) {
torture_assert(tctx, test_OpenKey_opts(tctx, b, handle,
KEY_CURRENT_VERSION,
- REG_KEYTYPE_NON_VOLATILE,
+ REG_OPTION_NON_VOLATILE,
KEY_QUERY_VALUE,
&newhandle,
WERR_OK),
@@ -2124,29 +2124,29 @@ static bool test_volatile_keys(struct torture_context *tctx,
struct policy_handle new_handle;
enum winreg_CreateAction action_taken;
- torture_comment(tctx, "Testing REG_KEYTYPE_VOLATILE key\n");
+ torture_comment(tctx, "Testing REG_OPTION_VOLATILE key\n");
torture_assert(tctx,
test_CreateKey_opts(tctx, b, handle, TEST_KEY_VOLATILE, NULL,
- REG_KEYTYPE_VOLATILE,
+ REG_OPTION_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
NULL,
WERR_OK,
&action_taken,
&new_handle),
- "failed to create REG_KEYTYPE_VOLATILE type key");
+ "failed to create REG_OPTION_VOLATILE type key");
torture_assert_int_equal(tctx, action_taken, REG_CREATED_NEW_KEY, "unexpected action");
torture_assert(tctx,
test_CreateKey_opts(tctx, b, &new_handle, TEST_SUBKEY_VOLATILE, NULL,
- REG_KEYTYPE_NON_VOLATILE,
+ REG_OPTION_NON_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
NULL,
WERR_CHILD_MUST_BE_VOLATILE,
NULL,
NULL),
- "failed to fail create REG_KEYTYPE_VOLATILE type key");
+ "failed to fail create REG_OPTION_VOLATILE type key");
torture_assert(tctx,
test_CloseKey(b, tctx, &new_handle),
@@ -2154,7 +2154,7 @@ static bool test_volatile_keys(struct torture_context *tctx,
torture_assert(tctx,
test_OpenKey_opts(tctx, b, handle, TEST_KEY_VOLATILE,
- REG_KEYTYPE_NON_VOLATILE,
+ REG_OPTION_NON_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
&new_handle,
WERR_OK),
@@ -2166,13 +2166,13 @@ static bool test_volatile_keys(struct torture_context *tctx,
torture_assert(tctx,
test_CreateKey_opts(tctx, b, handle, TEST_KEY_VOLATILE, NULL,
- REG_KEYTYPE_VOLATILE,
+ REG_OPTION_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
NULL,
WERR_OK,
&action_taken,
&new_handle),
- "failed to create REG_KEYTYPE_VOLATILE type key");
+ "failed to create REG_OPTION_VOLATILE type key");
torture_assert_int_equal(tctx, action_taken, REG_CREATED_NEW_KEY, "unexpected action");
@@ -2182,7 +2182,7 @@ static bool test_volatile_keys(struct torture_context *tctx,
torture_assert(tctx,
test_OpenKey_opts(tctx, b, handle, TEST_KEY_VOLATILE,
- REG_KEYTYPE_VOLATILE,
+ REG_OPTION_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
&new_handle,
WERR_OK),
@@ -2205,40 +2205,54 @@ static bool test_symlink_keys(struct torture_context *tctx,
{
struct policy_handle new_handle;
enum winreg_CreateAction action_taken;
+ DATA_BLOB blob;
+ /* symlink destination needs to be a kernel mode registry path */
+ const char *dest = "\\Registry\\MACHINE\\SOFTWARE\\foo";
/* disable until we know how to *not* screw up a windows registry */
torture_skip(tctx, "symlink test disabled");
- torture_comment(tctx, "Testing REG_KEYTYPE_SYMLINK key\n");
+ torture_comment(tctx, "Testing REG_OPTION_CREATE_LINK key\n");
test_DeleteKey(b, tctx, handle, TEST_KEY_SYMLINK);
torture_assert(tctx,
test_CreateKey_opts(tctx, b, handle, TEST_KEY_SYMLINK, NULL,
- REG_KEYTYPE_SYMLINK,
+ REG_OPTION_CREATE_LINK | REG_OPTION_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
NULL,
WERR_OK,
&action_taken,
&new_handle),
- "failed to create REG_KEYTYPE_SYMLINK type key");
+ "failed to create REG_OPTION_CREATE_LINK type key");
torture_assert_int_equal(tctx, action_taken, REG_CREATED_NEW_KEY, "unexpected action");
torture_assert(tctx,
+ convert_string_talloc(tctx, CH_UNIX, CH_UTF16,
+ dest, strlen(dest), /* not NULL terminated */
+ &blob.data, &blob.length,
+ false),
+ "failed to convert");
+
+ torture_assert(tctx,
+ test_SetValue(b, tctx, &new_handle, "SymbolicLinkValue", REG_LINK, blob.data, blob.length),
+ "failed to create SymbolicLinkValue value");
+
+ torture_assert(tctx,
test_CloseKey(b, tctx, &new_handle),
"failed to close");
torture_assert(tctx,
test_OpenKey_opts(tctx, b, handle, TEST_KEY_SYMLINK,
- REG_KEYTYPE_SYMLINK,
+ REG_OPTION_OPEN_LINK | REG_OPTION_VOLATILE,
SEC_FLAG_MAXIMUM_ALLOWED,
&new_handle,
WERR_OK),
"failed to open symlink key");
torture_assert(tctx,
- test_DeleteKey(b, tctx, &new_handle, TEST_KEY_SYMLINK),
+ test_DeleteKey(b, tctx, handle, TEST_KEY_SYMLINK),
--
Samba Shared Repository
More information about the samba-cvs
mailing list