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