From nobody Thu May 2 08:42:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.37 as permitted sender) client-ip=209.132.183.37; envelope-from=libvir-list-bounces@redhat.com; helo=mx5-phx2.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.37 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx5-phx2.redhat.com (mx5-phx2.redhat.com [209.132.183.37]) by mx.zohomail.com with SMTPS id 1488786092768163.0245287024078; Sun, 5 Mar 2017 23:41:32 -0800 (PST) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx5-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v267c90n006699; Mon, 6 Mar 2017 02:38:10 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v267c97T013502 for ; Mon, 6 Mar 2017 02:38:09 -0500 Received: from localhost.localdomain (ovpn-204-46.brq.redhat.com [10.40.204.46]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v267c74W023675; Mon, 6 Mar 2017 02:38:08 -0500 From: Michal Privoznik To: libvir-list@redhat.com Date: Mon, 6 Mar 2017 08:38:00 +0100 Message-Id: X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-loop: libvir-list@redhat.com Cc: predivan@mts.rs Subject: [libvirt] [PATCH] qemuTestDriverInit: Don't access live data X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Some of our tests (e.g. qemuhotplugtest) call virDomainSaveConfig(). Now the problem is, qemuTestDriverInit() creates a fake qemu driver and fills it with some fake configuration. At least so we hoped. The truth is, it calls regular virQEMUDriverConfigNew() and then fix couple of paths. Literally. Therefore our tests see regular stateDir and configDir for the user that is running the tests. Directories, where live domain XMLs are stored. Let's just hope our test suite hasn't mangled any of them. Signed-off-by: Michal Privoznik --- tests/testutilsqemu.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 56a89c913..0726cd317 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -513,6 +513,10 @@ qemuTestParseCapabilities(virCapsPtr caps, void qemuTestDriverFree(virQEMUDriver *driver) { virMutexDestroy(&driver->lock); + if (driver->config) { + virFileDeleteTree(driver->config->stateDir); + virFileDeleteTree(driver->config->configDir); + } virQEMUCapsCacheFree(driver->qemuCapsCache); virObjectUnref(driver->xmlopt); virObjectUnref(driver->caps); @@ -548,9 +552,14 @@ int qemuTestCapsCacheInsert(virQEMUCapsCachePtr cache,= const char *binary, return ret; } =20 +# define STATEDIRTEMPLATE abs_builddir "/qemustatedir-XXXXXX" +# define CONFIGDIRTEMPLATE abs_builddir "/qemuconfigdir-XXXXXX" + int qemuTestDriverInit(virQEMUDriver *driver) { virSecurityManagerPtr mgr =3D NULL; + char statedir[] =3D STATEDIRTEMPLATE; + char configdir[] =3D CONFIGDIRTEMPLATE; =20 memset(driver, 0, sizeof(*driver)); =20 @@ -561,6 +570,11 @@ int qemuTestDriverInit(virQEMUDriver *driver) if (!driver->config) goto error; =20 + /* Do this early so that qemuTestDriverFree() doesn't see (unlink) the= real + * dirs. */ + VIR_FREE(driver->config->stateDir); + VIR_FREE(driver->config->configDir); + /* Overwrite some default paths so it's consistent for tests. */ VIR_FREE(driver->config->libDir); VIR_FREE(driver->config->channelTargetDir); @@ -568,6 +582,26 @@ int qemuTestDriverInit(virQEMUDriver *driver) VIR_STRDUP(driver->config->channelTargetDir, "/tmp/channel") < 0) goto error; =20 + if (!mkdtemp(statedir)) { + virFilePrintf(stderr, "Cannot create fake stateDir"); + goto error; + } + + if (VIR_STRDUP(driver->config->stateDir, statedir) < 0) { + rmdir(statedir); + goto error; + } + + if (!mkdtemp(configdir)) { + virFilePrintf(stderr, "Cannot create fake configDir"); + goto error; + } + + if (VIR_STRDUP(driver->config->configDir, configdir) < 0) { + rmdir(configdir); + goto error; + } + driver->caps =3D testQemuCapsInit(); if (!driver->caps) goto error; --=20 2.11.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list