[libvirt] [PATCH python 1/1] Fix type extracting from PyDict

Edgar Kaziakhmedov edgar.kaziakhmedov at virtuozzo.com
Wed Jan 31 16:34:24 UTC 2018


PyInt_Check returns value whether or not an input object is the integer
type. The existing implementation of extracting leads to the wrong
type interpretation in the following code:

params = {libvirt.VIR_MIGRATE_PARAM_DISKS_PORT : 50123}
...
dom.migrate3(%option1, params, %option3)

where libvirt reports:

libvirt.libvirtError: invalid argument: invalid type 'ullong' for
parameter 'disks_port', expected 'int'

So, this patch fixes that bug and allows casting to the VIR_TYPED_PARAM_INT
type.

Signed-off-by: Edgar Kaziakhmedov <edgar.kaziakhmedov at virtuozzo.com>
---
 libvirt-utils.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/libvirt-utils.c b/libvirt-utils.c
index f7b4478..3a00e9f 100644
--- a/libvirt-utils.c
+++ b/libvirt-utils.c
@@ -434,10 +434,7 @@ virPyDictToTypedParamOne(virTypedParameterPtr *params,
                 type = VIR_TYPED_PARAM_ULLONG;
 #if PY_MAJOR_VERSION < 3
         } else if (PyInt_Check(value)) {
-            if (PyInt_AS_LONG(value) < 0)
-                type = VIR_TYPED_PARAM_LLONG;
-            else
-                type = VIR_TYPED_PARAM_ULLONG;
+            type = VIR_TYPED_PARAM_INT;
 #endif
         } else if (PyFloat_Check(value)) {
             type = VIR_TYPED_PARAM_DOUBLE;
--
2.11.0




More information about the libvir-list mailing list