[libvirt] [PATCH] snapshot: conf: Enforce absolute paths on disk and memory images

RNG schema as well as the qemu driver requires absolute paths for memory and disk snapshot image files but the XML parser was not enforcing it. Add checks to avoid problems in qemu where the configuration it creates is invalid. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1126329 --- src/conf/snapshot_conf.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index 240ca90..c53a66b 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -177,6 +177,16 @@ virDomainSnapshotDiskDefParseXML(xmlNodePtr node, } } + /* validate that the passed path is absolute */ + if (virStorageSourceIsLocalStorage(def->src) && + def->src->path && + def->src->path[0] != '/') { + virReportError(VIR_ERR_XML_ERROR, + _("disk snapshot image path '%s' must be absolute"), + def->src->path); + goto cleanup; + } + if (!def->snapshot && (def->src->path || def->src->format)) def->snapshot = VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL; @@ -327,6 +337,14 @@ virDomainSnapshotDefParse(xmlXPathContextPtr ctxt, def->file = memoryFile; memoryFile = NULL; + /* verify that memory path is absolute */ + if (def->file && def->file[0] != '/') { + virReportError(VIR_ERR_XML_ERROR, + _("memory snapshot file path (%s) must be absolute"), + def->file); + goto cleanup; + } + if ((n = virXPathNodeSet("./disks/*", ctxt, &nodes)) < 0) goto cleanup; if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_DISKS) { -- 2.0.2

On 08/06/2014 07:19 AM, Peter Krempa wrote:
RNG schema as well as the qemu driver requires absolute paths for memory and disk snapshot image files but the XML parser was not enforcing it. Add checks to avoid problems in qemu where the configuration it creates is invalid.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1126329 --- src/conf/snapshot_conf.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
ACK -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 08/06/14 17:36, Eric Blake wrote:
On 08/06/2014 07:19 AM, Peter Krempa wrote:
RNG schema as well as the qemu driver requires absolute paths for memory and disk snapshot image files but the XML parser was not enforcing it. Add checks to avoid problems in qemu where the configuration it creates is invalid.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1126329 --- src/conf/snapshot_conf.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
ACK
Pushed; Thanks. Peter
participants (2)
-
Eric Blake
-
Peter Krempa