mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-09 09:14:57 +00:00
snapshot: avoid virsh crash with older servers
Commits51082301
,16d7b39
, and521cc447
introduced support for 'virsh snapshot-list --from' when talking to a server older than 0.9.5, but broke support for plain 'virsh snapshot-list' for the same old server in the process. Because the code is not properly gated, we end up with a SIGSEGV during a strcmp with a NULL argument. * tools/virsh.c (cmdSnapshotList): Don't waste time on fallbacks when --from is not present.
This commit is contained in:
parent
d41d252694
commit
d9f6066598
@ -16740,10 +16740,10 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
|
||||
|
||||
qsort(&names[0], actual, sizeof(char*), namesorter);
|
||||
|
||||
if (tree || ctl->useSnapshotOld) {
|
||||
if (tree || (from && ctl->useSnapshotOld)) {
|
||||
parents = vshCalloc(ctl, sizeof(char *), actual);
|
||||
for (i = (from && !ctl->useSnapshotOld); i < actual; i++) {
|
||||
if (ctl->useSnapshotOld && STREQ(names[i], from)) {
|
||||
if (from && ctl->useSnapshotOld && STREQ(names[i], from)) {
|
||||
start_index = i;
|
||||
continue;
|
||||
}
|
||||
@ -16765,7 +16765,8 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
|
||||
char indentBuf[INDENT_BUFLEN];
|
||||
for (i = 0 ; i < actual ; i++) {
|
||||
memset(indentBuf, '\0', sizeof(indentBuf));
|
||||
if (ctl->useSnapshotOld ? STREQ(names[i], from) : !parents[i])
|
||||
if ((from && ctl->useSnapshotOld) ? STREQ(names[i], from) :
|
||||
!parents[i])
|
||||
cmdNodeListDevicesPrint(ctl,
|
||||
names,
|
||||
parents,
|
||||
@ -16834,7 +16835,7 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
|
||||
}
|
||||
|
||||
for (i = 0; i < actual; i++) {
|
||||
if (ctl->useSnapshotOld &&
|
||||
if (from && ctl->useSnapshotOld &&
|
||||
(descendants ? !names[i] : STRNEQ_NULLABLE(parents[i], from)))
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user