libvirt/blockcopy-check-dst-identical-device.patch
James Fehlig 278a149fdc Accepting request 253577 from home:jfehlig:branches:Virtualization
Note:  tarball verification is now done using %gpg_verify, along
with the .asc file the upstream libvirt maintainer now generates
for each release.  This approach requires using the upstream .gz
tarball, which is slightly larger than the regenerated .bz2 one.

- Update to libvirt 1.2.9
  - Introduce virNodeAllocPages
  - event: introduce new event for tunable values
  - Add support for fetching statistics of completed jobs
  - CVE-2014-3657: domain_conf: fix domain deadlock
  - CVE-2014-3633: qemu: blkiotune: Use correct definition when
    looking up disk
  - Many incremental improvements and bug fixes, see
    http://libvirt.org/news.html
  - Drop upstream patches: 3e745e8f-CVE-2014-3633.patch,
    libvirt-guests-wait-for-ntp.patch
- Verify tarball with associated .asc file
  Add: libvirt.keyring, libvirt-1.2.9.tar.gz.asc
  Use upstream .gz tarball instead of locally generated .bz2

OBS-URL: https://build.opensuse.org/request/show/253577
OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=411
2014-10-01 22:29:37 +00:00

34 lines
1.2 KiB
Diff

From 475b272c126d53f3985860422dc96b01b470423e Mon Sep 17 00:00:00 2001
From: Chunyan Liu <cyliu@suse.com>
Date: Tue, 29 Jul 2014 17:31:28 +0800
Subject: [PATCH] blockcopy: check dst = identical device
Check whether dst is the same device as source, if yes, report
error and exit.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
---
src/qemu/qemu_driver.c | 7 +++++++
1 file changed, 7 insertions(+)
Index: libvirt-1.2.9/src/qemu/qemu_driver.c
===================================================================
--- libvirt-1.2.9.orig/src/qemu/qemu_driver.c
+++ libvirt-1.2.9/src/qemu/qemu_driver.c
@@ -15589,6 +15589,15 @@ qemuDomainBlockCopyCommon(virDomainObjPt
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
_("non-file destination not supported yet"));
}
+
+ if (STREQ_NULLABLE(realpath(disk->src->path, NULL),
+ realpath(mirror->path, NULL))) {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("destination '%s' is the same as disk '%s' source"),
+ mirror->path, path);
+ goto endjob;
+ }
+
if (stat(mirror->path, &st) < 0) {
if (errno != ENOENT) {
virReportSystemError(errno, _("unable to stat for disk %s: %s"),