wbemprox: Fix handling of arrays as query results.
This commit is contained in:
parent
856b03501a
commit
37b1048bd2
|
@ -938,7 +938,7 @@ struct record_service
|
|||
struct record_sid
|
||||
{
|
||||
const WCHAR *accountname;
|
||||
const UINT8 *binaryrepresentation;
|
||||
const struct array *binaryrepresentation;
|
||||
const WCHAR *referenceddomainname;
|
||||
const WCHAR *sid;
|
||||
UINT32 sidlength;
|
||||
|
@ -2614,12 +2614,22 @@ static WCHAR *get_accountname( LSA_TRANSLATED_NAME *name )
|
|||
if (!name || !name->Name.Buffer) return NULL;
|
||||
return heap_strdupW( name->Name.Buffer );
|
||||
}
|
||||
static UINT8 *get_binaryrepresentation( PSID sid, UINT len )
|
||||
static struct array *get_binaryrepresentation( PSID sid, UINT len )
|
||||
{
|
||||
struct array *array = heap_alloc( sizeof(struct array) );
|
||||
if (array)
|
||||
{
|
||||
UINT8 *ret = heap_alloc( len );
|
||||
if (!ret) return NULL;
|
||||
if (ret)
|
||||
{
|
||||
memcpy( ret, sid, len );
|
||||
return ret;
|
||||
array->count = len;
|
||||
array->ptr = ret;
|
||||
return array;
|
||||
}
|
||||
heap_free( array );
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
static WCHAR *get_referenceddomainname( LSA_REFERENCED_DOMAIN_LIST *domain )
|
||||
{
|
||||
|
|
|
@ -288,10 +288,15 @@ void free_row_values( const struct table *table, UINT row )
|
|||
if (!(table->columns[i].type & COL_FLAG_DYNAMIC)) continue;
|
||||
|
||||
type = table->columns[i].type & COL_TYPE_MASK;
|
||||
if (type == CIM_STRING || type == CIM_DATETIME || (type & CIM_FLAG_ARRAY))
|
||||
if (type == CIM_STRING || type == CIM_DATETIME)
|
||||
{
|
||||
if (get_value( table, row, i, &val ) == S_OK) heap_free( (void *)(INT_PTR)val );
|
||||
}
|
||||
else if (type & CIM_FLAG_ARRAY)
|
||||
{
|
||||
if (get_value( table, row, i, &val ) == S_OK)
|
||||
destroy_array( (void *)(INT_PTR)val, type & CIM_TYPE_MASK );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue