[libvirt] [PATCH 14/20] qemu: reject unknown flags
Daniel P. Berrange
berrange at redhat.com
Thu Jul 7 09:28:27 UTC 2011
On Wed, Jul 06, 2011 at 05:23:57PM -0600, Eric Blake wrote:
> * src/qemu/qemu_driver.c (qemudOpen, qemuDomainScreenshot)
> (qemuDomainXMLFromNative, qemuDomainXMLToNative)
> (qemudDomainBlockPeek, qemuCPUCompare, qemuCPUBaseline): Reject
> unknown flags.
> * src/qemu/qemu_migration.c (qemuMigrationConfirm): Likewise.
> (_qemuMigrationCookie, qemuMigrationCookieXMLParse)
> (qemuMigrationCookieXMLParseStr, qemuMigrationBakeCookie)
> (qemuMigrationEatCookie): Make flags unsigned.
> ---
> src/qemu/qemu_driver.c | 30 +++++++++++++++++++++++-------
> src/qemu/qemu_migration.c | 16 +++++++++-------
> 2 files changed, 32 insertions(+), 14 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 4f12beb..a2fe4b8 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -800,8 +800,10 @@ static int qemuDomainSnapshotSetCurrentInactive(virDomainObjPtr vm,
>
> static virDrvOpenStatus qemudOpen(virConnectPtr conn,
> virConnectAuthPtr auth ATTRIBUTE_UNUSED,
> - unsigned int flags ATTRIBUTE_UNUSED)
> + unsigned int flags)
> {
> + virCheckFlags(0, VIR_DRV_OPEN_ERROR);
> +
> if (conn->uri == NULL) {
> if (qemu_driver == NULL)
> return VIR_DRV_OPEN_DECLINED;
> @@ -2686,7 +2688,7 @@ static char *
> qemuDomainScreenshot(virDomainPtr dom,
> virStreamPtr st,
> unsigned int screen,
> - unsigned int flags ATTRIBUTE_UNUSED)
> + unsigned int flags)
> {
> struct qemud_driver *driver = dom->conn->privateData;
> virDomainObjPtr vm;
> @@ -2695,6 +2697,8 @@ qemuDomainScreenshot(virDomainPtr dom,
> int tmp_fd = -1;
> char *ret = NULL;
>
> + virCheckFlags(0, NULL);
> +
> qemuDriverLock(driver);
> vm = virDomainFindByUUID(&driver->domains, dom->uuid);
> qemuDriverUnlock(driver);
> @@ -3881,11 +3885,14 @@ cleanup:
> static char *qemuDomainXMLFromNative(virConnectPtr conn,
> const char *format,
> const char *config,
> - unsigned int flags ATTRIBUTE_UNUSED) {
> + unsigned int flags)
> +{
> struct qemud_driver *driver = conn->privateData;
> virDomainDefPtr def = NULL;
> char *xml = NULL;
>
> + virCheckFlags(0, NULL);
> +
> if (STRNEQ(format, QEMU_CONFIG_FORMAT_ARGV)) {
> qemuReportError(VIR_ERR_INVALID_ARG,
> _("unsupported config type %s"), format);
> @@ -3908,7 +3915,8 @@ cleanup:
> static char *qemuDomainXMLToNative(virConnectPtr conn,
> const char *format,
> const char *xmlData,
> - unsigned int flags ATTRIBUTE_UNUSED) {
> + unsigned int flags)
> +{
> struct qemud_driver *driver = conn->privateData;
> virDomainDefPtr def = NULL;
> virDomainChrSourceDef monConfig;
> @@ -3917,6 +3925,8 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
> char *ret = NULL;
> int i;
>
> + virCheckFlags(0, NULL);
> +
> qemuDriverLock(driver);
>
> if (STRNEQ(format, QEMU_CONFIG_FORMAT_ARGV)) {
> @@ -6164,12 +6174,14 @@ qemudDomainBlockPeek (virDomainPtr dom,
> const char *path,
> unsigned long long offset, size_t size,
> void *buffer,
> - unsigned int flags ATTRIBUTE_UNUSED)
> + unsigned int flags)
> {
> struct qemud_driver *driver = dom->conn->privateData;
> virDomainObjPtr vm;
> int fd = -1, ret = -1, i;
>
> + virCheckFlags(0, -1);
> +
> qemuDriverLock(driver);
> vm = virDomainFindByUUID(&driver->domains, dom->uuid);
> qemuDriverUnlock(driver);
> @@ -7240,11 +7252,13 @@ out:
> static int
> qemuCPUCompare(virConnectPtr conn,
> const char *xmlDesc,
> - unsigned int flags ATTRIBUTE_UNUSED)
> + unsigned int flags)
> {
> struct qemud_driver *driver = conn->privateData;
> int ret = VIR_CPU_COMPARE_ERROR;
>
> + virCheckFlags(0, VIR_CPU_COMPARE_ERROR);
> +
> qemuDriverLock(driver);
>
> if (!driver->caps || !driver->caps->host.cpu) {
> @@ -7264,10 +7278,12 @@ static char *
> qemuCPUBaseline(virConnectPtr conn ATTRIBUTE_UNUSED,
> const char **xmlCPUs,
> unsigned int ncpus,
> - unsigned int flags ATTRIBUTE_UNUSED)
> + unsigned int flags)
> {
> char *cpu;
>
> + virCheckFlags(0, NULL);
> +
> cpu = cpuBaselineXML(xmlCPUs, ncpus, NULL, 0);
>
> return cpu;
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index d7b27a0..a01cbd1 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -76,8 +76,8 @@ struct _qemuMigrationCookieGraphics {
> typedef struct _qemuMigrationCookie qemuMigrationCookie;
> typedef qemuMigrationCookie *qemuMigrationCookiePtr;
> struct _qemuMigrationCookie {
> - int flags;
> - int flagsMandatory;
> + unsigned int flags;
> + unsigned int flagsMandatory;
>
> /* Host properties */
> unsigned char localHostuuid[VIR_UUID_BUFLEN];
> @@ -446,7 +446,7 @@ error:
> static int
> qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig,
> xmlXPathContextPtr ctxt,
> - int flags)
> + unsigned int flags)
> {
> char uuidstr[VIR_UUID_STRING_BUFLEN];
> char *tmp;
> @@ -580,7 +580,7 @@ error:
> static int
> qemuMigrationCookieXMLParseStr(qemuMigrationCookiePtr mig,
> const char *xml,
> - int flags)
> + unsigned int flags)
> {
> xmlDocPtr doc = NULL;
> xmlXPathContextPtr ctxt = NULL;
> @@ -614,7 +614,7 @@ qemuMigrationBakeCookie(qemuMigrationCookiePtr mig,
> virDomainObjPtr dom,
> char **cookieout,
> int *cookieoutlen,
> - int flags)
> + unsigned int flags)
> {
> if (!cookieout || !cookieoutlen)
> return 0;
> @@ -645,7 +645,7 @@ qemuMigrationEatCookie(struct qemud_driver *driver,
> virDomainObjPtr dom,
> const char *cookiein,
> int cookieinlen,
> - int flags)
> + unsigned int flags)
> {
> qemuMigrationCookiePtr mig = NULL;
>
> @@ -2605,7 +2605,7 @@ int qemuMigrationConfirm(struct qemud_driver *driver,
> virDomainObjPtr vm,
> const char *cookiein,
> int cookieinlen,
> - unsigned int flags ATTRIBUTE_UNUSED,
> + unsigned int flags,
> int retcode)
> {
> qemuMigrationCookiePtr mig;
> @@ -2616,6 +2616,8 @@ int qemuMigrationConfirm(struct qemud_driver *driver,
> driver, conn, vm, NULLSTR(cookiein), cookieinlen,
> flags, retcode);
>
> + virCheckFlags(0, -1);
> +
> if (!(mig = qemuMigrationEatCookie(driver, vm, cookiein, cookieinlen, 0)))
> return -1;
>
ACK
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list