[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