From a5428e0b6d430c490a3d7b930f358a5d9057160f Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Wed, 10 Jul 2019 12:31:45 +0200 Subject: Fix dirindex writing for ext dir inode This commit makes sure we write the index count to the inode before writing out the inode itself. Signed-off-by: David Oberhollenzer --- lib/sqfs/write_inode.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/sqfs/write_inode.c b/lib/sqfs/write_inode.c index 1e73725..ac33b60 100644 --- a/lib/sqfs/write_inode.c +++ b/lib/sqfs/write_inode.c @@ -300,18 +300,17 @@ int meta_writer_write_inode(fstree_t *fs, id_table_t *idtbl, meta_writer_t *im, if (node->xattr != NULL) ext.xattr_idx = htole32(node->xattr->index); + if (diridx != NULL) + ext.inodex_count = htole32(diridx->num_nodes - 1); + if (meta_writer_append(im, &ext, sizeof(ext))) { free(diridx); return -1; } - if (node->data.dir->size > 0) { - ext.inodex_count = htole32(diridx->num_nodes - 1); - - if (write_dir_index(diridx, im)) { - free(diridx); - return -1; - } + if (diridx != NULL && write_dir_index(diridx, im) != 0) { + free(diridx); + return -1; } free(diridx); -- cgit v1.2.3