From: Hilko Bengen <bengen(a)hilluzination.de>
* Richard W.M. Jones:
> Both size_t and int are 32 bit values. An endianess issue,
maybe?
I guess it might be. We're supposed to be doing le32toh / be32toh
everywhere as appropriate, but we might be missing one. The code is
mainly tested on little endian arches.
Found it.
Now "make check" completes successfully on Sparc and PowerPC.
---
lib/hivex.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/hivex.c b/lib/hivex.c
index 2abd5bd..7715520 100644
--- a/lib/hivex.c
+++ b/lib/hivex.c
@@ -1062,7 +1062,7 @@ get_values (hive_h *h, hive_node_h node,
size_t i;
for (i = 0; i < nr_values; ++i) {
- hive_node_h value = vlist->offset[i];
+ hive_node_h value = le32toh (vlist->offset[i]);
value += 0x1000;
if (!IS_VALID_BLOCK (h, value)) {
if (h->msglvl >= 2)
--
1.7.5.1