mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
network: Fix NULL dereference during error recovery
This fixes: https://bugzilla.redhat.com/show_bug.cgi?id=696660 While starting a network, if brSetForwardDelay() fails, we go to err1 where we want to access macTapIfName variable which was just VIR_FREE'd a few lines above. Instead, keep macTapIfName until we are certain of success.
This commit is contained in:
committed by
Laine Stump
parent
1ef5a3d37e
commit
2444c411ca
@@ -1616,7 +1616,7 @@ networkStartNetworkDaemon(struct network_driver *driver,
|
|||||||
bool v4present = false, v6present = false;
|
bool v4present = false, v6present = false;
|
||||||
virErrorPtr save_err = NULL;
|
virErrorPtr save_err = NULL;
|
||||||
virNetworkIpDefPtr ipdef;
|
virNetworkIpDefPtr ipdef;
|
||||||
char *macTapIfName;
|
char *macTapIfName = NULL;
|
||||||
|
|
||||||
if (virNetworkObjIsActive(network)) {
|
if (virNetworkObjIsActive(network)) {
|
||||||
networkReportError(VIR_ERR_OPERATION_INVALID,
|
networkReportError(VIR_ERR_OPERATION_INVALID,
|
||||||
@@ -1657,7 +1657,6 @@ networkStartNetworkDaemon(struct network_driver *driver,
|
|||||||
VIR_FREE(macTapIfName);
|
VIR_FREE(macTapIfName);
|
||||||
goto err0;
|
goto err0;
|
||||||
}
|
}
|
||||||
VIR_FREE(macTapIfName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set bridge options */
|
/* Set bridge options */
|
||||||
@@ -1731,6 +1730,7 @@ networkStartNetworkDaemon(struct network_driver *driver,
|
|||||||
goto err5;
|
goto err5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VIR_FREE(macTapIfName);
|
||||||
VIR_INFO(_("Starting up network '%s'"), network->def->name);
|
VIR_INFO(_("Starting up network '%s'"), network->def->name);
|
||||||
network->active = 1;
|
network->active = 1;
|
||||||
|
|
||||||
@@ -1778,6 +1778,7 @@ networkStartNetworkDaemon(struct network_driver *driver,
|
|||||||
macTapIfName, network->def->bridge,
|
macTapIfName, network->def->bridge,
|
||||||
virStrerror(err, ebuf, sizeof ebuf));
|
virStrerror(err, ebuf, sizeof ebuf));
|
||||||
}
|
}
|
||||||
|
VIR_FREE(macTapIfName);
|
||||||
|
|
||||||
err0:
|
err0:
|
||||||
if (!save_err)
|
if (!save_err)
|
||||||
|
|||||||
Reference in New Issue
Block a user