mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-21 20:15:17 +00:00
Fix misc OOM bugs
* tests/testutils.c: Run test function twice, once to prime it for static allocations, once to count the non-static allocations. * tests/testutilsqemu.c: Initialize variable correctl * src/capabilities.c: Don't free machines variable upon failure since caller must do that * src/xm_internal.c: Add missing check for OOM in building VIF config param
This commit is contained in:
parent
4ff6091294
commit
8eacfd4cc2
@ -354,10 +354,6 @@ virCapabilitiesAddGuest(virCapsPtr caps,
|
||||
if (loader &&
|
||||
(guest->arch.defaultInfo.loader = strdup(loader)) == NULL)
|
||||
goto no_memory;
|
||||
if (nmachines) {
|
||||
guest->arch.defaultInfo.nmachines = nmachines;
|
||||
guest->arch.defaultInfo.machines = machines;
|
||||
}
|
||||
|
||||
if (VIR_REALLOC_N(caps->guests,
|
||||
caps->nguests + 1) < 0)
|
||||
@ -365,6 +361,11 @@ virCapabilitiesAddGuest(virCapsPtr caps,
|
||||
caps->guests[caps->nguests] = guest;
|
||||
caps->nguests++;
|
||||
|
||||
if (nmachines) {
|
||||
guest->arch.defaultInfo.nmachines = nmachines;
|
||||
guest->arch.defaultInfo.machines = machines;
|
||||
}
|
||||
|
||||
return guest;
|
||||
|
||||
no_memory:
|
||||
@ -407,10 +408,6 @@ virCapabilitiesAddGuestDomain(virCapsGuestPtr guest,
|
||||
if (loader &&
|
||||
(dom->info.loader = strdup(loader)) == NULL)
|
||||
goto no_memory;
|
||||
if (nmachines) {
|
||||
dom->info.nmachines = nmachines;
|
||||
dom->info.machines = machines;
|
||||
}
|
||||
|
||||
if (VIR_REALLOC_N(guest->arch.domains,
|
||||
guest->arch.ndomains + 1) < 0)
|
||||
@ -418,6 +415,10 @@ virCapabilitiesAddGuestDomain(virCapsGuestPtr guest,
|
||||
guest->arch.domains[guest->arch.ndomains] = dom;
|
||||
guest->arch.ndomains++;
|
||||
|
||||
if (nmachines) {
|
||||
dom->info.nmachines = nmachines;
|
||||
dom->info.machines = machines;
|
||||
}
|
||||
|
||||
return dom;
|
||||
|
||||
|
@ -2046,6 +2046,9 @@ static int xenXMDomainConfigFormatNet(virConnectPtr conn,
|
||||
virBufferVSprintf(&buf, ",vifname=%s",
|
||||
net->ifname);
|
||||
|
||||
if (virBufferError(&buf))
|
||||
goto cleanup;
|
||||
|
||||
if (VIR_ALLOC(val) < 0) {
|
||||
virReportOOMError(conn);
|
||||
goto cleanup;
|
||||
|
@ -367,10 +367,7 @@ int virtTestMain(int argc,
|
||||
}
|
||||
}
|
||||
|
||||
if (testOOM)
|
||||
virAllocTestInit();
|
||||
|
||||
/* Run once to count allocs, and ensure it passes :-) */
|
||||
/* Run once to prime any static allocations & ensure it passes */
|
||||
ret = (func)(argc, argv);
|
||||
if (ret != EXIT_SUCCESS)
|
||||
goto cleanup;
|
||||
@ -385,6 +382,13 @@ int virtTestMain(int argc,
|
||||
testOOM++;
|
||||
virSetErrorFunc(NULL, virtTestErrorFuncQuiet);
|
||||
|
||||
virAllocTestInit();
|
||||
|
||||
/* Run again to count allocs, and ensure it passes :-) */
|
||||
ret = (func)(argc, argv);
|
||||
if (ret != EXIT_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
approxAlloc = virAllocTestCount();
|
||||
testCounter++;
|
||||
if (testDebug)
|
||||
|
Loading…
x
Reference in New Issue
Block a user