[PATCH] fs/squashfs: Fix index off by 1 for inode SQFS_LDIR_TYPE

João Marcos Costa jmcosta944 at gmail.com
Fri Oct 30 18:48:45 CET 2020


Tested-by Joao Marcos Costa <jmcosta944 at gmail.com>

Em sex., 30 de out. de 2020 às 10:42, Gerard Koskamp <
gerard.koskamp at nedap.com> escreveu:

> I've created a squashfs file system with Yocto (it use squashfs-tools)
> and u-boot command sqfsls give the error:'Error while searching inode:
> unknown type.'
> After some digging in the code I found that the index is off by 1.
> This patch fix this issue and I can successful use the sqfsls command.
> After search for the squashfs format I found a link talk about a
> similar issue but this time in the documentation. The link is:
> https://github.com/AgentD/squashfs-tools-ng/commit/e6588526838caece9529
>
> Signed-off-by: Gerard Koskamp <gerard.koskamp at nedap.com>
> CC: Joao Marcos Costa <joaomarcos.costa at bootlin.com>
> ---
>
>  fs/squashfs/sqfs_inode.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/squashfs/sqfs_inode.c b/fs/squashfs/sqfs_inode.c
> index 14d70cf..0983974 100644
> --- a/fs/squashfs/sqfs_inode.c
> +++ b/fs/squashfs/sqfs_inode.c
> @@ -49,7 +49,7 @@ int sqfs_inode_size(struct squashfs_base_inode *inode,
> u32 blk_size)
>                         return sizeof(*ldir);
>
>                 di = ldir->index;
> -               while (l < i_count + 1) {
> +               while (l < i_count) {
>                         sz = get_unaligned_le32(&di->size) + 1;
>                         index_list_size += sz;
>                         di = (void *)di + sizeof(*di) + sz;
> @@ -57,7 +57,7 @@ int sqfs_inode_size(struct squashfs_base_inode *inode,
> u32 blk_size)
>                 }
>
>                 return sizeof(*ldir) + index_list_size +
> -                       (i_count + 1) * SQFS_DIR_INDEX_BASE_LENGTH;
> +                       i_count * SQFS_DIR_INDEX_BASE_LENGTH;
>         }
>
>         case SQFS_LREG_TYPE: {
> --
> 2.7.4



-- 
Atenciosamente,
João Marcos Costa

www.linkedin.com/in/jmarcoscosta/
https://github.com/jmarcoscosta


More information about the U-Boot mailing list