From: Daniel P. Berrange Date: Mon, 10 Mar 2014 15:50:19 +0000 (+0000) Subject: Change QEMU capabilities cache to check ctime instead of mtime X-Git-Tag: v1.2.3-rc1~307 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f5059a929e0db6689e908e354b13a60661c143e1;p=thirdparty%2Flibvirt.git Change QEMU capabilities cache to check ctime instead of mtime Debian's package manager will preserve mtime timestamp on binaries from the time they are built, rather than installed. So if a user downgrades their QEMU dpkg, the libvirt capabilities cache will not refresh. The fix is to use ctime instead of mtime since it cannot be faked. Signed-off-by: Daniel P. Berrange --- diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index cae25e0e1f..df5581fb65 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -259,7 +259,7 @@ struct _virQEMUCaps { bool usedQMP; char *binary; - time_t mtime; + time_t ctime; virBitmapPtr flags; @@ -2796,7 +2796,7 @@ virQEMUCapsPtr virQEMUCapsNewForBinary(const char *binary, binary); goto error; } - qemuCaps->mtime = sb.st_mtime; + qemuCaps->ctime = sb.st_ctime; /* Make sure the binary we are about to try exec'ing exists. * Technically we could catch the exec() failure, but that's @@ -2838,7 +2838,7 @@ bool virQEMUCapsIsValid(virQEMUCapsPtr qemuCaps) if (stat(qemuCaps->binary, &sb) < 0) return false; - return sb.st_mtime == qemuCaps->mtime; + return sb.st_ctime == qemuCaps->ctime; }