mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
Ignore bridge template names with multiple printf conversions
For some reason, we allow a bridge name with %d in it, which we replace with an unsigned integer to form a bridge name that does not yet exist on the host. Do not blindly pass it to virAsprintf if it's not the only conversion, to prevent crashing on input like: <network> <name>test</name> <forward mode='none'/> <bridge name='virbr%d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s'/> </network> Ignore any template strings that do not have exactly one %d conversion, like we do in various drivers before calling virNetDevTapCreateInBridgePort.
This commit is contained in:
parent
2f37362e44
commit
076dd37995
@ -2775,7 +2775,13 @@ networkFindUnusedBridgeName(virNetworkObjListPtr nets,
|
||||
|
||||
int ret = -1, id = 0;
|
||||
char *newname = NULL;
|
||||
const char *templ = def->bridge ? def->bridge : "virbr%d";
|
||||
const char *templ = "virbr%d";
|
||||
const char *p;
|
||||
|
||||
if (def->bridge &&
|
||||
(p = strchr(def->bridge, '%')) == strrchr(def->bridge, '%') &&
|
||||
p[1] == 'd')
|
||||
templ = def->bridge;
|
||||
|
||||
do {
|
||||
if (virAsprintf(&newname, templ, id) < 0)
|
||||
|
Loading…
Reference in New Issue
Block a user