mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-08 07:15:46 +00:00
Fix crashes in Xen capabilities code
* src/xen_internal.c: Don't free memory now owned by the virCapsPtr structure * tests/testutilsxen.c: Fix up for change in internal API
This commit is contained in:
parent
f055724b27
commit
dd6cd7dd63
@ -2223,8 +2223,7 @@ xenHypervisorBuildCapabilities(virConnectPtr conn,
|
|||||||
virCapabilitiesFreeMachines(machines, 1);
|
virCapabilitiesFreeMachines(machines, 1);
|
||||||
goto no_memory;
|
goto no_memory;
|
||||||
}
|
}
|
||||||
|
machines = NULL;
|
||||||
virCapabilitiesFreeMachines(machines, 1);
|
|
||||||
|
|
||||||
if (virCapabilitiesAddGuestDomain(guest,
|
if (virCapabilitiesAddGuestDomain(guest,
|
||||||
"xen",
|
"xen",
|
||||||
|
@ -9,6 +9,8 @@ virCapsPtr testXenCapsInit(void) {
|
|||||||
struct utsname utsname;
|
struct utsname utsname;
|
||||||
virCapsPtr caps;
|
virCapsPtr caps;
|
||||||
virCapsGuestPtr guest;
|
virCapsGuestPtr guest;
|
||||||
|
virCapsGuestMachinePtr *machines;
|
||||||
|
int nmachines;
|
||||||
static const char *const x86_machines[] = {
|
static const char *const x86_machines[] = {
|
||||||
"xenfv"
|
"xenfv"
|
||||||
};
|
};
|
||||||
@ -21,10 +23,16 @@ virCapsPtr testXenCapsInit(void) {
|
|||||||
0, 0)) == NULL)
|
0, 0)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
nmachines = ARRAY_CARDINALITY(x86_machines);
|
||||||
|
if ((machines = virCapabilitiesAllocMachines(x86_machines, nmachines)) == NULL)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
if ((guest = virCapabilitiesAddGuest(caps, "hvm", "i686", 32,
|
if ((guest = virCapabilitiesAddGuest(caps, "hvm", "i686", 32,
|
||||||
"/usr/lib/xen/bin/qemu-dm", NULL,
|
"/usr/lib/xen/bin/qemu-dm", NULL,
|
||||||
1, x86_machines)) == NULL)
|
nmachines, machines)) == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
machines = NULL;
|
||||||
|
|
||||||
if (virCapabilitiesAddGuestDomain(guest,
|
if (virCapabilitiesAddGuestDomain(guest,
|
||||||
"xen",
|
"xen",
|
||||||
NULL,
|
NULL,
|
||||||
@ -33,10 +41,16 @@ virCapsPtr testXenCapsInit(void) {
|
|||||||
NULL) == NULL)
|
NULL) == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
nmachines = ARRAY_CARDINALITY(xen_machines);
|
||||||
|
if ((machines = virCapabilitiesAllocMachines(xen_machines, nmachines)) == NULL)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
if ((guest = virCapabilitiesAddGuest(caps, "xen", "i686", 32,
|
if ((guest = virCapabilitiesAddGuest(caps, "xen", "i686", 32,
|
||||||
"/usr/lib/xen/bin/qemu-dm", NULL,
|
"/usr/lib/xen/bin/qemu-dm", NULL,
|
||||||
1, xen_machines)) == NULL)
|
nmachines, machines)) == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
machines = NULL;
|
||||||
|
|
||||||
if (virCapabilitiesAddGuestDomain(guest,
|
if (virCapabilitiesAddGuestDomain(guest,
|
||||||
"xen",
|
"xen",
|
||||||
NULL,
|
NULL,
|
||||||
@ -48,6 +62,7 @@ virCapsPtr testXenCapsInit(void) {
|
|||||||
return caps;
|
return caps;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
virCapabilitiesFreeMachines(machines, nmachines);
|
||||||
virCapabilitiesFree(caps);
|
virCapabilitiesFree(caps);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user