Some of these assignments were introduced in commit
c9d5cd059c45fd3aa6d16b3ba185d7cb3a08de9e ("hivex: Fix allocations that
may move C heap buffer."), but turn out to be unnecessary (unused).
Replace the assignments by a comment in case someone extends the code
later.
Caught by Clang static analyzer.
---
lib/write.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/lib/write.c b/lib/write.c
index 9de8ecd..abd12c5 100644
--- a/lib/write.c
+++ b/lib/write.c
@@ -264,7 +264,6 @@ delete_values (hive_h *h, hive_node_h node)
int is_inline;
len = le32toh (vk->data_len);
is_inline = !!(len & 0x80000000); /* top bit indicates is inline */
- len &= 0x7fffffff;
if (!is_inline) { /* non-inline, so remove data block */
size_t data_offset = le32toh (vk->data_offset);
@@ -707,7 +706,7 @@ hivex_node_add_child (hive_h *h, hive_node_h parent, const char
*name)
/* Recalculate pointers that could have been invalidated by
* previous call to allocate_block (via new_lh_record).
*/
- nk = (struct ntreg_nk_record *) ((char *) h->addr + nkoffset);
+ /* nk could be invalid here */
parent_nk = (struct ntreg_nk_record *) ((char *) h->addr + parent);
DEBUG (2, "no keys, allocated new lh-record at 0x%zx", lh_offs);
@@ -723,7 +722,7 @@ hivex_node_add_child (hive_h *h, hive_node_h parent, const char
*name)
/* Recalculate pointers that could have been invalidated by
* previous call to allocate_block (via new_lh_record).
*/
- nk = (struct ntreg_nk_record *) ((char *) h->addr + nkoffset);
+ /* nk could be invalid here */
parent_nk = (struct ntreg_nk_record *) ((char *) h->addr + parent);
}
@@ -950,8 +949,6 @@ hivex_node_set_values (hive_h *h, hive_node_h node,
nk->nr_values = htole32 (nr_values);
nk->vallist = htole32 (vallist_offs - 0x1000);
- struct ntreg_value_list *vallist =
- (struct ntreg_value_list *) ((char *) h->addr + vallist_offs);
size_t i;
for (i = 0; i < nr_values; ++i) {
@@ -970,7 +967,8 @@ hivex_node_set_values (hive_h *h, hive_node_h node,
* previous call to allocate_block.
*/
nk = (struct ntreg_nk_record *) ((char *) h->addr + node);
- vallist = (struct ntreg_value_list *) ((char *) h->addr + vallist_offs);
+ struct ntreg_value_list *vallist =
+ (struct ntreg_value_list *) ((char *) h->addr + vallist_offs);
vallist->offset[i] = htole32 (vk_offs - 0x1000);
@@ -1000,7 +998,7 @@ hivex_node_set_values (hive_h *h, hive_node_h node,
* previous call to allocate_block.
*/
nk = (struct ntreg_nk_record *) ((char *) h->addr + node);
- vallist = (struct ntreg_value_list *) ((char *) h->addr + vallist_offs);
+ /* vallist could be invalid here */
vk = (struct ntreg_vk_record *) ((char *) h->addr + vk_offs);
memcpy ((char *) h->addr + offs + 4, values[i].value, values[i].len);
--
2.0.2