svn commit: samba r4105 - in branches/SAMBA_4_0/source: librpc/idl
torture/rpc
jelmer at samba.org
jelmer at samba.org
Wed Dec 8 22:02:50 GMT 2004
Author: jelmer
Date: 2004-12-08 22:02:49 +0000 (Wed, 08 Dec 2004)
New Revision: 4105
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=4105
Log:
Fix IDL for QueryValue() and add a torture test for it.
Thanks to Michael Allen for some hints on what was wrong with the previous IDL.
Modified:
branches/SAMBA_4_0/source/librpc/idl/winreg.idl
branches/SAMBA_4_0/source/torture/rpc/winreg.c
Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/winreg.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/winreg.idl 2004-12-08 17:43:04 UTC (rev 4104)
+++ branches/SAMBA_4_0/source/librpc/idl/winreg.idl 2004-12-08 22:02:49 UTC (rev 4105)
@@ -229,15 +229,14 @@
/* Function: 0x11 */
WERROR winreg_QueryValue(
[in,ref] policy_handle *handle,
- [in] winreg_String valuename,
- [in] uint32 *reserved,
+ [in] winreg_String value_name,
+ [in,out] uint32 *type,
[in] uint32 *offered,
- [in] uint32 *unknown1,
- [in] uint32 *unknown2,
- [out] uint32 *type,
- [out] uint8 *data,
- [in,out] uint32 *offered2,
- [in,out] uint32 *val_length
+ [in] uint32 unknown1,
+ [in] uint32 unknown2,
+ [out] EnumValueOut *value_out,
+ [in,out] uint32 *value_len1,
+ [in,out] uint32 *value_len2
);
/******************/
Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2004-12-08 17:43:04 UTC (rev 4104)
+++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2004-12-08 22:02:49 UTC (rev 4105)
@@ -168,6 +168,8 @@
}
if (!W_ERROR_IS_OK(r.out.result)) {
+ printf("OpenKey failed - %s\n", win_errstr(r.out.result));
+
return False;
}
@@ -263,9 +265,6 @@
if (!test_OpenKey(
p, mem_ctx, handle, r.out.out_name->name,
&key_handle)) {
- printf("OpenKey(%s) failed - %s\n",
- r.out.out_name->name,
- win_errstr(r.out.result));
} else {
test_key(p, mem_ctx, &key_handle, depth + 1);
}
@@ -290,6 +289,41 @@
return True;
}
+static BOOL test_QueryValue(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *valuename)
+{
+ struct winreg_QueryValue r;
+ NTSTATUS status;
+ struct EnumValueNameOut valname;
+ uint32 zero = 0;
+ uint32 offered = 0xfff;
+
+ valname.name = valuename;
+
+ printf("Testing QueryValue\n");
+
+ r.in.handle = handle;
+ r.in.value_name.name = valuename;
+ r.in.type = &zero;
+ r.in.unknown1 = 0;
+ r.in.unknown2 = 0;
+ r.in.offered = &offered;
+ r.in.value_len1 = &offered;
+ r.in.value_len2 = &zero;
+
+ status = dcerpc_winreg_QueryValue(p, mem_ctx, &r);
+ if(NT_STATUS_IS_ERR(status)) {
+ printf("QueryValue failed - %s\n", nt_errstr(status));
+ return False;
+ }
+
+ if (!W_ERROR_IS_OK(r.out.result)) {
+ printf("QueryValue failed - %s\n", win_errstr(r.out.result));
+ return False;
+ }
+
+ return True;
+}
+
static BOOL test_EnumValue(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
struct policy_handle *handle, int max_valnamelen, int max_valbufsize)
{
@@ -298,6 +332,7 @@
struct EnumValueIn buf_val;
uint32 type;
uint32 len1 = max_valbufsize, len2 = 0;
+ BOOL ret = True;
printf("testing EnumValue\n");
@@ -324,6 +359,10 @@
return False;
}
+ if (W_ERROR_IS_OK(r.out.result)) {
+ ret &= test_QueryValue(p, mem_ctx, handle, r.out.name_out.name);
+ }
+
r.in.enum_index++;
} while (W_ERROR_IS_OK(r.out.result));
@@ -332,7 +371,7 @@
return False;
}
- return True;
+ return ret;
}
static BOOL test_OpenHKLM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
More information about the samba-cvs
mailing list