mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
virsh-snapshot: Update snapshot commands to use vshCommandOptStringReq
also avoids potential NULL pointer dereference: $ virsh snapshot-current asdf "" error: invalid snapshotname argument '(null)' by removing the error message in favor of vshCommandOptStringReq
This commit is contained in:
parent
351f7a2f2c
commit
b2e8585555
@ -207,7 +207,7 @@ cmdSnapshotCreate(vshControl *ctl, const vshCmd *cmd)
|
|||||||
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
|
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (vshCommandOptString(cmd, "xmlfile", &from) <= 0) {
|
if (vshCommandOptStringReq(ctl, cmd, "xmlfile", &from) < 0) {
|
||||||
buffer = vshStrdup(ctl, "<domainsnapshot/>");
|
buffer = vshStrdup(ctl, "<domainsnapshot/>");
|
||||||
} else {
|
} else {
|
||||||
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) {
|
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) {
|
||||||
@ -431,11 +431,9 @@ cmdSnapshotCreateAs(vshControl *ctl, const vshCmd *cmd)
|
|||||||
if (dom == NULL)
|
if (dom == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (vshCommandOptString(cmd, "name", &name) < 0 ||
|
if (vshCommandOptStringReq(ctl, cmd, "name", &name) < 0 ||
|
||||||
vshCommandOptString(cmd, "description", &desc) < 0) {
|
vshCommandOptStringReq(ctl, cmd, "description", &desc) < 0)
|
||||||
vshError(ctl, _("argument must not be empty"));
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
|
|
||||||
virBufferAddLit(&buf, "<domainsnapshot>\n");
|
virBufferAddLit(&buf, "<domainsnapshot>\n");
|
||||||
if (name)
|
if (name)
|
||||||
@ -443,10 +441,8 @@ cmdSnapshotCreateAs(vshControl *ctl, const vshCmd *cmd)
|
|||||||
if (desc)
|
if (desc)
|
||||||
virBufferEscapeString(&buf, " <description>%s</description>\n", desc);
|
virBufferEscapeString(&buf, " <description>%s</description>\n", desc);
|
||||||
|
|
||||||
if (vshCommandOptString(cmd, "memspec", &memspec) < 0) {
|
if (vshCommandOptStringReq(ctl, cmd, "memspec", &memspec) < 0)
|
||||||
vshError(ctl, _("memspec argument must not be empty"));
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
|
|
||||||
if (memspec && vshParseSnapshotMemspec(ctl, &buf, memspec) < 0)
|
if (memspec && vshParseSnapshotMemspec(ctl, &buf, memspec) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -496,10 +492,8 @@ vshLookupSnapshot(vshControl *ctl, const vshCmd *cmd,
|
|||||||
bool current = vshCommandOptBool(cmd, "current");
|
bool current = vshCommandOptBool(cmd, "current");
|
||||||
const char *snapname = NULL;
|
const char *snapname = NULL;
|
||||||
|
|
||||||
if (vshCommandOptString(cmd, arg, &snapname) < 0) {
|
if (vshCommandOptStringReq(ctl, cmd, arg, &snapname) < 0)
|
||||||
vshError(ctl, _("invalid argument for --%s"), arg);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
|
|
||||||
if (exclusive && current && snapname) {
|
if (exclusive && current && snapname) {
|
||||||
vshError(ctl, _("--%s and --current are mutually exclusive"), arg);
|
vshError(ctl, _("--%s and --current are mutually exclusive"), arg);
|
||||||
@ -703,10 +697,9 @@ cmdSnapshotCurrent(vshControl *ctl, const vshCmd *cmd)
|
|||||||
if (dom == NULL)
|
if (dom == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (vshCommandOptString(cmd, "snapshotname", &snapshotname) < 0) {
|
if (vshCommandOptStringReq(ctl, cmd, "snapshotname", &snapshotname) < 0)
|
||||||
vshError(ctl, _("invalid snapshotname argument '%s'"), snapshotname);
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
if (snapshotname) {
|
if (snapshotname) {
|
||||||
virDomainSnapshotPtr snapshot2 = NULL;
|
virDomainSnapshotPtr snapshot2 = NULL;
|
||||||
flags = (VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE |
|
flags = (VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE |
|
||||||
|
Loading…
Reference in New Issue
Block a user