[Libguestfs] [PATCH] hivex/python fix for i386 integer size issue

Richard W.M. Jones rjones at redhat.com
Thu Apr 28 08:39:53 UTC 2011


On Thu, Apr 28, 2011 at 12:20:08AM +0200, Hilko Bengen wrote:
> Hi,
> 
> While working on Debian packages of hivex 1.2.5, I came across a test
> failure for the Python bindings with Python 2.7 on the i386
> architecture. (The tests ran fine on amd64.)
> 
> ,----
> | $ make -C python check
> | make[1]: Entering directory `/home/bengen/src/deb/hivex/hivex.git/python'
> | 010-import.py
> | 020-open.py
> | 021-close.py
> | 200-write.py
> | python: hivex-py.c:52: get_handle: Assertion `obj' failed.
> `----
> 
> I narrowed this down to hivex-py.c:py_hivex_node_add_child():
> 
> The call
> 
> ,----
> | PyArg_ParseTuple (args, (char *) "OLs:hivex_node_add_child", 
> |                         &py_h, &parent, &name)
> `----
> 
> results in `py_h' set to NULL, though Python's documentation claims that
> this cannot happen. I think this happens because `parent' is declared a
> `long int', but "L" in the format string corresponds to a `long long'.
> On amd64, they have the same size, but on i386 they don't, so the
> PyObject pointer is written to the wrong address.
> 
> Please consider applying the patch below which just changes the format
> string. After regenerating hivex-py.c, I have successfully tested the
> 1.2.5 code base on both architectures.
> 
> Cheers,
> -Hilko
> 
> diff --git a/generator/generator.ml b/generator/generator.ml
> index 7e706d1..9722312 100755
> --- a/generator/generator.ml
> +++ b/generator/generator.ml
> @@ -2875,7 +2875,7 @@ put_val_type (char *val, size_t len, hive_type t)
>  	    pr "O"
>  	| ANode n
>  	| AValue n ->
> -	    pr "L"
> +	    pr "l"
>  	| AString n ->
>  	    pr "s"
>          | AStringNullable n ->

Looking at the code, I think this was clearly a mistake and I've
pushed your fix.

Thanks for your contribution!

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top



More information about the Libguestfs mailing list