On Fri, Feb 05, 2010 at 01:20:44PM +0000, Matthew Booth wrote:
On 05/02/10 12:46, Richard W.M. Jones wrote:
On Thu, Feb 04, 2010 at 04:54:53PM +0000, Matthew Booth wrote:
+ size_t len; + len = le32toh (vk->data_len); + if (len == 0x80000000) /* special case */ + len = 4; + len &= 0x7fffffff;
Comment, please. What's going on with this record length?
This is a mysterious and undocumented part of the format. I don't claim to understand why, but it is necessary.
Hehe, ok. Can you at least put in a comment to that effect, preferrably with a pointer to your source.
Alright I've looked into this further: The MSB (vk->data_len & 0x80000000) indicates whether the data is inline. In all existing registry hives, the data is always stored inline if the data length <= 4 (ie. the data_len field would be stored in those cases as 0x80000004 or whatever). I am updating the code accordingly ... Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html