[libvirt] [PATCH] Fix integer overflow in hotplug methods

Dave Allan dallan at redhat.com
Wed May 26 13:10:45 UTC 2010


On Wed, May 26, 2010 at 01:35:49PM +0100, Daniel P. Berrange wrote:
> The hotplug methods still had the qemuCmdFlags variable declared
> as an int, instead of unsigned long long. This caused flag checks
> to be incorrect for flags > 31
> 
> * src/qemu/qemu_driver.c: Fix integer overflow in hotplug
> ---
>  src/qemu/qemu_driver.c |   16 ++++++++--------
>  1 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 64dbf4a..ad99d59 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -7019,7 +7019,7 @@ error:
>  static int qemudDomainAttachPciDiskDevice(struct qemud_driver *driver,
>                                            virDomainObjPtr vm,
>                                            virDomainDiskDefPtr disk,
> -                                          int qemuCmdFlags)
> +                                          unsigned long long qemuCmdFlags)
>  {
>      int i, ret;
>      const char* type = virDomainDiskBusTypeToString(disk->bus);
> @@ -7114,7 +7114,7 @@ error:
>  static int qemudDomainAttachPciControllerDevice(struct qemud_driver *driver,
>                                                  virDomainObjPtr vm,
>                                                  virDomainControllerDefPtr controller,
> -                                                int qemuCmdFlags)
> +                                                unsigned long long qemuCmdFlags)
>  {
>      int i;
>      int ret = -1;
> @@ -7180,7 +7180,7 @@ static virDomainControllerDefPtr
>  qemuDomainFindOrCreateSCSIDiskController(struct qemud_driver *driver,
>                                           virDomainObjPtr vm,
>                                           int controller,
> -                                         int qemuCmdFlags)
> +                                         unsigned long long qemuCmdFlags)
>  {
>      int i;
>      virDomainControllerDefPtr cont;
> @@ -7225,7 +7225,7 @@ qemuDomainFindOrCreateSCSIDiskController(struct qemud_driver *driver,
>  static int qemudDomainAttachSCSIDisk(struct qemud_driver *driver,
>                                       virDomainObjPtr vm,
>                                       virDomainDiskDefPtr disk,
> -                                     int qemuCmdFlags)
> +                                     unsigned long long qemuCmdFlags)
>  {
>      int i;
>      qemuDomainObjPrivatePtr priv = vm->privateData;
> @@ -7341,7 +7341,7 @@ error:
>  static int qemudDomainAttachUsbMassstorageDevice(struct qemud_driver *driver,
>                                                   virDomainObjPtr vm,
>                                                   virDomainDiskDefPtr disk,
> -                                                 int qemuCmdFlags)
> +                                                 unsigned long long qemuCmdFlags)
>  {
>      qemuDomainObjPrivatePtr priv = vm->privateData;
>      int i, ret;
> @@ -7652,7 +7652,7 @@ no_memory:
>  static int qemudDomainAttachHostPciDevice(struct qemud_driver *driver,
>                                            virDomainObjPtr vm,
>                                            virDomainHostdevDefPtr hostdev,
> -                                          int qemuCmdFlags)
> +                                          unsigned long long qemuCmdFlags)
>  {
>      qemuDomainObjPrivatePtr priv = vm->privateData;
>      pciDevice *pci;
> @@ -7764,7 +7764,7 @@ error:
>  static int qemudDomainAttachHostUsbDevice(struct qemud_driver *driver,
>                                            virDomainObjPtr vm,
>                                            virDomainHostdevDefPtr hostdev,
> -                                          int qemuCmdFlags)
> +                                          unsigned long long qemuCmdFlags)
>  {
>      int ret;
>      qemuDomainObjPrivatePtr priv = vm->privateData;
> @@ -7808,7 +7808,7 @@ error:
>  static int qemudDomainAttachHostDevice(struct qemud_driver *driver,
>                                         virDomainObjPtr vm,
>                                         virDomainHostdevDefPtr hostdev,
> -                                       int qemuCmdFlags)
> +                                       unsigned long long qemuCmdFlags)
>  {
>      if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) {
>          qemuReportError(VIR_ERR_NO_SUPPORT,
> -- 
> 1.6.6.1
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

Confirmed flags should be unsigned long long.

ACK.

Dave




More information about the libvir-list mailing list