]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: move temp file of screenshot and memorypeek to per-domain dir
authorPeng Liang <liangpeng10@huawei.com>
Mon, 13 Sep 2021 14:23:46 +0000 (22:23 +0800)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 23 Sep 2021 10:42:26 +0000 (12:42 +0200)
The temp files of screenshot and memory peek, which are created by QEMU,
are put in the cache directory.  However, the caches of domain
capabilities, which are created and used by libvirtd, are also put in
the cache directory.  In order to make the cache directory more secure,
move the temp files of screenshot and memory peek to per-domain
directory.

Since the temp files are just temporary files and are only used by
libvirtd (libvirtd will delete them after use), the use of screenshot
and memory peek will be affected.

Signed-off-by: Peng Liang <liangpeng10@huawei.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c

index 6ae678b165a485d3610ba05e3beff43acfb6cc7f..ce3603b3135144d26fbf81ae341ed31c152be890 100644 (file)
@@ -3431,7 +3431,7 @@ qemuDomainScreenshot(virDomainPtr dom,
         }
     }
 
-    tmp = g_strdup_printf("%s/qemu.screendump.XXXXXX", cfg->cacheDir);
+    tmp = g_strdup_printf("%s/qemu.screendump.XXXXXX", priv->libDir);
 
     if ((tmp_fd = g_mkstemp_full(tmp, O_RDWR | O_CLOEXEC, S_IRUSR | S_IWUSR)) == -1) {
         virReportSystemError(errno, _("g_mkstemp(\"%s\") failed"), tmp);
@@ -10676,6 +10676,7 @@ qemuDomainMemoryPeek(virDomainPtr dom,
     if (!(vm = qemuDomainObjFromDomain(dom)))
         goto cleanup;
 
+    priv = vm->privateData;
     cfg = virQEMUDriverGetConfig(driver);
 
     if (virDomainMemoryPeekEnsureACL(dom->conn, vm->def) < 0)
@@ -10693,7 +10694,7 @@ qemuDomainMemoryPeek(virDomainPtr dom,
     if (virDomainObjCheckActive(vm) < 0)
         goto endjob;
 
-    tmp = g_strdup_printf("%s/qemu.mem.XXXXXX", cfg->cacheDir);
+    tmp = g_strdup_printf("%s/qemu.mem.XXXXXX", priv->libDir);
 
     /* Create a temporary filename. */
     if ((fd = g_mkstemp_full(tmp, O_RDWR | O_CLOEXEC, S_IRUSR | S_IWUSR)) == -1) {
@@ -10704,7 +10705,6 @@ qemuDomainMemoryPeek(virDomainPtr dom,
 
     qemuSecurityDomainSetPathLabel(driver, vm, tmp, false);
 
-    priv = vm->privateData;
     qemuDomainObjEnterMonitor(driver, vm);
     if (flags == VIR_MEMORY_VIRTUAL) {
         if (qemuMonitorSaveVirtualMemory(priv->mon, offset, size, tmp) < 0) {