diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-07-16 21:42:00 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-07-16 22:47:59 +0200 |
commit | 74a064d9f15fa2d534e8b2d1ade68d10d5b65dfd (patch) | |
tree | 01e4847178600e2e034af4c4c88f49386078bb55 | |
parent | 14a925f6da442ecade7df75eb46a6edb9a1499af (diff) |
Fix directory index creation
Digging around in kernel internals and mksquashfs reveals that it is
actually a buffer offset into the raw directory buffer. The error
hasn't been noted until now because of the bug fixed by a5428e0.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
-rw-r--r-- | include/meta_writer.h | 2 | ||||
-rw-r--r-- | lib/sqfs/write_dir.c | 2 | ||||
-rw-r--r-- | lib/sqfs/write_inode.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/include/meta_writer.h b/include/meta_writer.h index c10dd16..09d7456 100644 --- a/include/meta_writer.h +++ b/include/meta_writer.h @@ -10,7 +10,7 @@ typedef struct { tree_node_t *node; uint32_t block; - uint32_t offset; + uint32_t index; } idx_ref_t; typedef struct { diff --git a/lib/sqfs/write_dir.c b/lib/sqfs/write_dir.c index 9f8923b..909e0bb 100644 --- a/lib/sqfs/write_dir.c +++ b/lib/sqfs/write_dir.c @@ -99,7 +99,7 @@ int meta_writer_write_dir(meta_writer_t *dm, dir_info_t *dir, i = (*index)->num_nodes++; (*index)->idx_nodes[i].node = c; (*index)->idx_nodes[i].block = block; - (*index)->idx_nodes[i].offset = offset; + (*index)->idx_nodes[i].index = dir->size; hdr.count = htole32(count - 1); hdr.start_block = htole32(c->inode_ref >> 16); diff --git a/lib/sqfs/write_inode.c b/lib/sqfs/write_inode.c index 611b0e1..a013d6f 100644 --- a/lib/sqfs/write_inode.c +++ b/lib/sqfs/write_inode.c @@ -101,7 +101,7 @@ static int write_dir_index(dir_index_t *diridx, meta_writer_t *im) for (i = 0; i < diridx->num_nodes; ++i) { idx.start_block = htole32(diridx->idx_nodes[i].block); - idx.index = htole32(diridx->idx_nodes[i].offset); + idx.index = htole32(diridx->idx_nodes[i].index); idx.size = strlen(diridx->idx_nodes[i].node->name) - 1; idx.size = htole32(idx.size); |