svn commit: samba r2807 - in branches/SAMBA_4_0/source:
librpc/idl scripting/swig/torture
Jelmer Vernooij
jelmer at samba.org
Sun Oct 3 12:33:07 GMT 2004
Thanks, Tim ! :-) Now I can finally finish this stuff in gregedit.
Cheers,
Jelmer
On Sun, Oct 03, 2004 at 11:07:04AM +0000, tpot at samba.org wrote about 'svn commit: samba r2807 - in branches/SAMBA_4_0/source: librpc/idl scripting/swig/torture':
> Author: tpot
> Date: 2004-10-03 11:07:04 +0000 (Sun, 03 Oct 2004)
> New Revision: 2807
>
> WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=2807&nolog=1
>
> Log:
> OK I think winreg_EnumValue() finally works. The previous version
> didn't work with non-NULL registry value names.
>
> Update testsuite to enumerate all keys and values two levels deep.
>
> Modified:
> branches/SAMBA_4_0/source/librpc/idl/winreg.idl
> branches/SAMBA_4_0/source/scripting/swig/torture/winreg.py
>
>
> Changeset:
> Modified: branches/SAMBA_4_0/source/librpc/idl/winreg.idl
> ===================================================================
> --- branches/SAMBA_4_0/source/librpc/idl/winreg.idl 2004-10-03 11:05:13 UTC (rev 2806)
> +++ branches/SAMBA_4_0/source/librpc/idl/winreg.idl 2004-10-03 11:07:04 UTC (rev 2807)
> @@ -127,23 +127,37 @@
> typedef struct {
> uint32 max_len;
> uint32 offset;
> + uint32 len;
> + } EnumValueIn;
> +
> + typedef struct {
> + uint16 len;
> + uint16 max_len;
> + EnumValueIn *buffer;
> + } EnumValueNameIn;
> +
> + typedef struct {
> + uint32 max_len;
> + uint32 offset;
> DATA_BLOB buffer;
> - } EnumValue;
> + } EnumValueOut;
>
> typedef struct {
> uint16 len;
> uint16 max_len;
> - EnumValue *buffer;
> - } EnumValueName;
> + unistr *name;
> + } EnumValueNameOut;
>
> /******************/
> /* Function: 0x0a */
> WERROR winreg_EnumValue(
> [in,ref] policy_handle *handle,
> [in] uint32 enum_index,
> - [in,out] EnumValueName name,
> + [in] EnumValueNameIn name_in,
> + [out] EnumValueNameOut name_out,
> [in,out] uint32 *type,
> - [in,out] EnumValue *value,
> + [in] EnumValueIn *value_in,
> + [out] EnumValueOut *value_out,
> [in,out] uint32 *value_len1,
> [in,out] uint32 *value_len2
> );
>
> Modified: branches/SAMBA_4_0/source/scripting/swig/torture/winreg.py
> ===================================================================
> --- branches/SAMBA_4_0/source/scripting/swig/torture/winreg.py 2004-10-03 11:05:13 UTC (rev 2806)
> +++ branches/SAMBA_4_0/source/scripting/swig/torture/winreg.py 2004-10-03 11:07:04 UTC (rev 2807)
> @@ -30,12 +30,16 @@
>
> dcerpc.winreg_CloseKey(pipe, r)
>
> -def test_Enum(pipe, handle, depth = 0):
> +def test_Enum(pipe, handle, name, depth = 0):
>
> if depth > 2:
> return
>
> - keyinfo = test_QueryInfoKey(pipe, handle)
> + try:
> + keyinfo = test_QueryInfoKey(pipe, handle)
> + except dcerpc.WERROR, arg:
> + if arg[0] == dcerpc.WERR_ACCESS_DENIED:
> + return
>
> # Enumerate keys
>
> @@ -68,7 +72,8 @@
>
> result = dcerpc.winreg_OpenKey(pipe, s)
>
> - test_Enum(pipe, result['handle'], depth + 1)
> + test_Enum(pipe, result['handle'], name + '/' + s['keyname']['name'],
> + depth + 1)
>
> test_CloseKey(pipe, result['handle'])
>
> @@ -77,45 +82,31 @@
> r = {}
> r['handle'] = handle
>
> - keyinfo['max_valnamelen'] = 18
> - keyinfo['max_valbufsize'] = 0x31f5
> -
> - r['foo'] = {}
> - r['foo']['len'] = 0
> - r['foo']['max_len'] = keyinfo['max_valnamelen'] * 2
> - r['foo']['buffer'] = {}
> - r['foo']['buffer']['max_len'] = keyinfo['max_valnamelen']
> - r['foo']['buffer']['offset'] = 0
> - r['foo']['buffer']['len'] = 0
> - r['foo']['buffer']['buffer'] = ''
> + r['name_in'] = {}
> + r['name_in']['len'] = 0
> + r['name_in']['max_len'] = (keyinfo['max_valnamelen'] + 1) * 2
> + r['name_in']['buffer'] = {}
> + r['name_in']['buffer']['max_len'] = keyinfo['max_valnamelen'] + 1
> + r['name_in']['buffer']['offset'] = 0
> + r['name_in']['buffer']['len'] = 0
> r['type'] = 0
> - r['value'] = {}
> - r['value']['max_len'] = keyinfo['max_valbufsize']
> - r['value']['offset'] = 0
> - r['value']['len'] = 0
> - r['value']['buffer'] = []
> - r['returned_len'] = 0
> - r['foo2'] = {}
> - r['foo2']['max_len'] = keyinfo['max_valbufsize']
> - r['foo2']['offset'] = 0
> - r['foo2']['len'] = 0
> - r['foo2']['buffer'] = ''
> - r['value1'] = keyinfo['max_valbufsize']
> - r['value2'] = 0
> + r['value_in'] = {}
> + r['value_in']['max_len'] = keyinfo['max_valbufsize']
> + r['value_in']['offset'] = 0
> + r['value_in']['len'] = 0
> + r['value_len1'] = keyinfo['max_valbufsize']
> + r['value_len2'] = 0
>
> for i in range(0, keyinfo['num_values']):
>
> r['enum_index'] = i
>
> - print keyinfo
> - print dcerpc.winreg_EnumValue(pipe, r)
> + dcerpc.winreg_EnumValue(pipe, r)
>
> - sys.exit(1)
> +def test_Key(pipe, handle, name):
>
> -def test_Key(pipe, handle):
> + test_Enum(pipe, handle, name)
>
> - test_Enum(pipe, handle)
> -
> def runtests(binding, domain, username, password):
>
> print 'Testing WINREG pipe'
> @@ -126,5 +117,4 @@
>
> handle = test_OpenHKLM(pipe)
>
> - test_Key(pipe, handle)
> -
> + test_Key(pipe, handle, 'HKLM')
--
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://lists.samba.org/archive/samba-technical/attachments/20041003/ba694c8d/attachment.bin
More information about the samba-technical
mailing list