dcerpc_winreg_QueryValue

tridge at samba.org tridge at samba.org
Thu Dec 9 07:58:11 GMT 2004


Jelmer,

I've committed the fixes for QueryValue, and have also fixed up
EnumValue like this:

	typedef struct {
		uint16 length;
		uint16 size;
		[size_is(size/2),length_is(length/2)] uint16 *name;
	} winreg_EnumValueString;

	WERROR winreg_EnumValue(
		[in,ref] policy_handle *handle,
		[in]     uint32 enum_index,
		[in]     winreg_EnumValueString name_in,
		[out]    winreg_String name_out,
		[in,out] uint32 *type,
		[in,out,size_is(*size),length_is(*length)] uint8 *value,
		[in,out] uint32 *size,
		[in,out] uint32 *length
	);

There are some others in winreg that need fixing. For example, this
structure is clearly bogus:

	typedef struct {
		uint32 max_len;
		uint32 offset;
		uint32 len;
	} KeySecuritySize;

whenever you have a structure that contains a size, offset, length
triple like that then it is almost always really a NDR array. 

When someone decides to fix that function, I suspect you want this:

	typedef struct {
		[size_is(size), length_is(length)] uint8 *data;
		uint32 size;
		uint32 length;
	} KeySecurityData;

	WERROR winreg_GetKeySecurity(
		[in,ref] policy_handle *handle,
		[in]     uint32 unknown,
		[in,out] KeySecurityData data
	);



More information about the samba-technical mailing list