diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 9ea2334837e15c5f75e8cc73caf4f918df018c4a..8bd9461f1e3de8cefc536bb4104ae72aa7df8364 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8531,37 +8531,27 @@ qemuBuildChannelsCommandLine(virLogManagerPtr logManager, for (i = 0; i < def->nchannels; i++) { virDomainChrDefPtr channel = def->channels[i]; - char *devstr; + g_autofree char *chardevstr = NULL; + g_autofree char *netdevstr = NULL; - switch ((virDomainChrChannelTargetType) channel->targetType) { - case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD: - if (!(devstr = qemuBuildChrChardevStr(logManager, secManager, + if (!(chardevstr = qemuBuildChrChardevStr(logManager, secManager, cmd, cfg, def, channel->source, channel->info.alias, qemuCaps, cdevflags))) - return -1; - virCommandAddArg(cmd, "-chardev"); - virCommandAddArg(cmd, devstr); - VIR_FREE(devstr); + return -1; - if (qemuBuildChrDeviceStr(&devstr, def, channel, qemuCaps) < 0) + virCommandAddArg(cmd, "-chardev"); + virCommandAddArg(cmd, chardevstr); + + switch ((virDomainChrChannelTargetType) channel->targetType) { + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD: + if (qemuBuildChrDeviceStr(&netdevstr, def, channel, qemuCaps) < 0) return -1; - virCommandAddArgList(cmd, "-netdev", devstr, NULL); - VIR_FREE(devstr); + virCommandAddArgList(cmd, "-netdev", netdevstr, NULL); break; case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO: - if (!(devstr = qemuBuildChrChardevStr(logManager, secManager, - cmd, cfg, def, - channel->source, - channel->info.alias, - qemuCaps, cdevflags))) - return -1; - virCommandAddArg(cmd, "-chardev"); - virCommandAddArg(cmd, devstr); - VIR_FREE(devstr); - if (qemuBuildChrDeviceCommandLine(cmd, def, channel, qemuCaps) < 0) return -1; break;