The internal allocate_block() function wasn't updating the bitmap,
so if you revisited a block which you had allocated in the same
session, you could get an EFAULT error.
---
hivex/hivex.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/hivex/hivex.c b/hivex/hivex.c
index 6b4b9d8..2a094b8 100644
--- a/hivex/hivex.c
+++ b/hivex/hivex.c
@@ -1847,6 +1847,8 @@ allocate_block (hive_h *h, size_t seg_len, const char id[2])
blockhdr->id[1] = id[1];
}
+ BITMAP_SET (h->bitmap, offset);
+
h->endblocks += seg_len;
/* If there is space after the last block in the last page, then we
--
1.6.5.2