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

Edgar Kaziakhmedov edgar.kaziakhmedov at virtuozzo.com
Wed Feb 7 10:46:00 UTC 2018


Ping


On 01/31/2018 07:34 PM, Edgar Kaziakhmedov wrote:
> 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
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
> .
>




More information about the libvir-list mailing list