int qemuMonitorTextCreateSnapshot(qemuMonitorPtr mon, const char *name)
{
- char *cmd;
+ char *cmd = NULL;
char *reply = NULL;
int ret = -1;
+ char *safename;
- if (virAsprintf(&cmd, "savevm \"%s\"", name) < 0) {
+ if (!(safename = qemuMonitorEscapeArg(name)) ||
+ virAsprintf(&cmd, "savevm \"%s\"", safename) < 0) {
virReportOOMError();
- return -1;
+ goto cleanup;
}
if (qemuMonitorHMPCommand(mon, cmd, &reply)) {
ret = 0;
cleanup:
+ VIR_FREE(safename);
VIR_FREE(cmd);
VIR_FREE(reply);
return ret;
int qemuMonitorTextLoadSnapshot(qemuMonitorPtr mon, const char *name)
{
- char *cmd;
+ char *cmd = NULL;
char *reply = NULL;
int ret = -1;
+ char *safename;
- if (virAsprintf(&cmd, "loadvm \"%s\"", name) < 0) {
+ if (!(safename = qemuMonitorEscapeArg(name)) ||
+ virAsprintf(&cmd, "loadvm \"%s\"", safename) < 0) {
virReportOOMError();
- return -1;
+ goto cleanup;
}
if (qemuMonitorHMPCommand(mon, cmd, &reply)) {
ret = 0;
cleanup:
+ VIR_FREE(safename);
VIR_FREE(cmd);
VIR_FREE(reply);
return ret;
int qemuMonitorTextDeleteSnapshot(qemuMonitorPtr mon, const char *name)
{
- char *cmd;
+ char *cmd = NULL;
char *reply = NULL;
int ret = -1;
+ char *safename;
- if (virAsprintf(&cmd, "delvm \"%s\"", name) < 0) {
+ if (!(safename = qemuMonitorEscapeArg(name)) ||
+ virAsprintf(&cmd, "delvm \"%s\"", safename) < 0) {
virReportOOMError();
- return -1;
+ goto cleanup;
}
if (qemuMonitorHMPCommand(mon, cmd, &reply)) {
qemuReportError(VIR_ERR_OPERATION_FAILED,
ret = 0;
cleanup:
+ VIR_FREE(safename);
VIR_FREE(cmd);
VIR_FREE(reply);
return ret;