Connor McAdams (@cmcadams) commented about dlls/setupapi/devinst.c:
*prop_type = DEVPROP_TYPE_STRING_LIST;
if (req_size)
*req_size = size;
}
- }
- else if (IsEqualDevPropKey( *prop_key, DEVPKEY_Device_ContainerId ))
- {
WCHAR id_str[39];
if (!SetupDiGetDeviceRegistryPropertyW( devinfo, device_data, SPDRP_BASE_CONTAINERID, NULL, (BYTE *)id_str,
sizeof(id_str), NULL ))
return GetLastError() == ERROR_INVALID_DATA ? ERROR_NOT_FOUND : GetLastError();
*prop_type = DEVPROP_TYPE_GUID;
if (buf_size >= sizeof( GUID ))
{
GUID guid = {0};
id_str[37] = 0;
Is it ever possible for this function to return an empty string, or a string not representing a GUID? Elsewhere in setupapi it seems there are checks to ensure the correct characters are there, i.e: ``` if (szKeyName[0] == '{' && szKeyName[37] == '}') ``` If it's something that is only ever handled by us I guess we could do an assert to make sure it never gets messed up.