mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
r11457: fixed the winreg IDL and torture code so key and value enumerations
work again. The automatic value() is fine for the length, but cannot be used for the size as the size is not the number of bytes being sent, but the number of bytes that the server is allowed to use in the reply (This used to be commit 46e91f269c83707863a726e716325eade38e1142)
This commit is contained in:
parent
9aa3c44f70
commit
e8c23e4e2d
@ -131,7 +131,10 @@
|
||||
|
||||
typedef struct {
|
||||
[value(strlen_m(name)*2)] uint16 length;
|
||||
[value(strlen_m(name)*2)] uint16 size;
|
||||
/* size cannot be auto-set by value() as it is the
|
||||
amount of space the server is allowed to use for this
|
||||
string in the reply, not its current size */
|
||||
uint16 size;
|
||||
[size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
|
||||
} winreg_StringBuf;
|
||||
|
||||
|
@ -403,6 +403,7 @@ static BOOL test_EnumKey(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
printf("Testing EnumKey\n\n");
|
||||
|
||||
class.name = "";
|
||||
class.size = 1024;
|
||||
|
||||
r.in.handle = handle;
|
||||
r.in.enum_index = 0;
|
||||
@ -413,6 +414,7 @@ static BOOL test_EnumKey(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
|
||||
do {
|
||||
name.name = NULL;
|
||||
name.size = 1024;
|
||||
|
||||
status = dcerpc_winreg_EnumKey(p, mem_ctx, &r);
|
||||
|
||||
@ -533,6 +535,7 @@ static BOOL test_EnumValue(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
printf("testing EnumValue\n");
|
||||
|
||||
name.name = "";
|
||||
name.size = 1024;
|
||||
|
||||
r.in.handle = handle;
|
||||
r.in.enum_index = 0;
|
||||
@ -684,7 +687,7 @@ static BOOL test_Open(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
const char *name, winreg_open_fn open_fn)
|
||||
{
|
||||
struct policy_handle handle, newhandle;
|
||||
BOOL ret = True, created = False, deleted = False;
|
||||
BOOL ret = True, created = False, created2 = False, deleted = False;
|
||||
struct winreg_OpenHKLM r;
|
||||
NTSTATUS status;
|
||||
|
||||
@ -742,20 +745,17 @@ static BOOL test_Open(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
ret = False;
|
||||
}
|
||||
|
||||
if (created && !test_CreateKey_sd(p, mem_ctx, &handle, TEST_KEY2,
|
||||
if (created && test_CreateKey_sd(p, mem_ctx, &handle, TEST_KEY2,
|
||||
NULL, &newhandle)) {
|
||||
printf("CreateKey failed - not considering a failure\n");
|
||||
created = False;
|
||||
} else {
|
||||
created = True;
|
||||
created2 = True;
|
||||
}
|
||||
|
||||
if (created && !test_GetKeySecurity(p, mem_ctx, &newhandle)) {
|
||||
if (created2 && !test_GetKeySecurity(p, mem_ctx, &newhandle)) {
|
||||
printf("GetKeySecurity failed\n");
|
||||
ret = False;
|
||||
}
|
||||
|
||||
if (created && !test_CloseKey(p, mem_ctx, &newhandle)) {
|
||||
if (created2 && !test_CloseKey(p, mem_ctx, &newhandle)) {
|
||||
printf("CloseKey failed\n");
|
||||
ret = False;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user