[PATCH] erofs-utils: lib: support GNUTYPE_LONGNAME for tarerofs
Jingbo Xu
jefflexu at linux.alibaba.com
Mon Jul 17 17:53:39 AEST 2023
On 7/17/23 3:35 PM, Gao Xiang wrote:
> The 'L' entry is present in a header for a series of 1 or more 512-byte
> tar blocks that hold just the filename for a file or directory with a
> name over 100 chars.
>
> Following that series is another header block, in the traditional form:
> A header with type '0' (regular file) or '5' (directory), followed by
> the appropriate number of data blocks with the entry data.
>
> In the header for this series, the name will be truncated to the 1st 100
> characters of the actual name.
>
> Cc: Jingbo Xu <jefflexu at linux.alibaba.com>
> Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
> ---
> lib/tar.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/lib/tar.c b/lib/tar.c
> index 8edfe75..b62e562 100644
> --- a/lib/tar.c
> +++ b/lib/tar.c
> @@ -570,6 +570,14 @@ restart:
> if (ret)
> goto out;
> goto restart;
> + } else if (th.typeflag == 'L') {
> + free(eh.path);
> + eh.path = malloc(st.st_size + 1);
> + if (st.st_size != erofs_read_from_fd(tar->fd, eh.path,
> + st.st_size))
> + goto invalid_tar;
> + eh.path[st.st_size] = '\0';
> + goto restart;
> } else if (th.typeflag == 'K') {
> free(eh.link);
> eh.link = malloc(st.st_size + 1);
LGTM.
Tested-by: Jingbo Xu <jefflexu at linux.alibaba.com>
--
Thanks,
Jingbo
More information about the Linux-erofs
mailing list