@@ -3776,21 +3776,27 @@ get_device_instance_id_interface(struct gc_arena *gc)
goto next;
}
- struct device_instance_id_interface *dev_if;
- ALLOC_OBJ_CLEAR_GC(dev_if, struct device_instance_id_interface, gc);
- dev_if->net_cfg_instance_id = (unsigned char *)string_alloc((char *)net_cfg_instance_id, gc);
- dev_if->device_interface_list = string_alloc(BSTR(&dev_interface_list), gc);
-
- /* link into return list */
- if (!first)
- {
- first = dev_if;
- }
- if (last)
+ char *dev_if = BSTR(&dev_interface_list);
+ while (strlen(dev_if) > 0)
{
- last->next = dev_if;
+ struct device_instance_id_interface *dev_iif;
+ ALLOC_OBJ_CLEAR_GC(dev_iif, struct device_instance_id_interface, gc);
+ dev_iif->net_cfg_instance_id = (unsigned char *)string_alloc((char *)net_cfg_instance_id, gc);
+ dev_iif->device_interface = string_alloc(dev_if, gc);
+
+ /* link into return list */
+ if (!first)
+ {
+ first = dev_iif;
+ }
+ if (last)
+ {
+ last->next = dev_iif;
+ }
+ last = dev_iif;
+
+ dev_if += strlen(dev_if) + 1;
}
- last = dev_if;
next:
RegCloseKey(dev_key);
@@ -6466,12 +6472,11 @@ tun_try_open_device(struct tuntap *tt, const char *device_guid, const struct dev
{
const struct device_instance_id_interface *dev_if;
- /* Open Wintun adapter */
for (dev_if = device_instance_id_interface; dev_if != NULL; dev_if = dev_if->next)
{
if (strcmp((const char *)dev_if->net_cfg_instance_id, device_guid) == 0)
{
- path = dev_if->device_interface_list;
+ path = dev_if->device_interface;
break;
}
}
@@ -382,7 +382,7 @@ struct panel_reg
struct device_instance_id_interface
{
LPBYTE net_cfg_instance_id;
- const char *device_interface_list;
+ const char *device_interface;
struct device_instance_id_interface *next;
};