On Tue, Apr 21, 2015 at 05:52:14PM +0200, Peter Krempa wrote:
When a user would specify a backing chain index that is above the start point libvirt would report a rather unhelpful error: invalid argument: could not find backing store 1 in chain for 'sub/link2' This patch adds an explicit check that the index is below start point in the backing store and reports the following error if not: invalid argument: requested backing store index 1 is above 'sub/../qcow2' in chain for 'sub/link2' Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1177062 --- src/util/virstoragefile.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index c9d3977..2a2f238 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -1341,6 +1341,15 @@ virStorageFileChainLookup(virStorageSourcePtr chain, *parent = startFrom; } + if (idx && idx < i) { + virReportError(VIR_ERR_INVALID_ARG, + _("requested backing store index %u is above '%s' " + "in chain for '%s'"), + idx, NULLSTR(startFrom->path), NULLSTR(start));
Possible crasher: startFrom can be NULL here, rather move the check into the previous block where the parent is being set when found (idx can't be < i when there is no startFrom anyway). You can then avoid cleaning up the *parent here -+ | +-----------+ | v
+ *parent = NULL; + return NULL; + } +
ACK series with that fixed.
Attachment:
signature.asc
Description: PGP signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list