[PATCH v2] erofs-utils: fuse: fix random readlink error
Li GuiFu
bluce.lee at aliyun.com
Mon Mar 1 00:30:19 AEDT 2021
On 2021/2/10 3:38, Gao Xiang via Linux-erofs wrote:
> Hi Weiwen,
>
> On Sat, Jan 30, 2021 at 02:07:47AM +0800, Hu Weiwen wrote:
>> readlink should fill a **null-terminated** string in the buffer.
>>
>> To achieve this:
>> 1) memset(0) for unmapped extents;
>> 2) make erofsfuse_read() properly returning the actual bytes read;
>> 3) insert a null character if the path is truncated.
>>
>> Link: https://lore.kernel.org/r/20210121101233.GC6680@DESKTOP-N4CECTO.huww98.cn
>
> Looked into this patch just now...
>
> The Link tag is only used for refering to the patch itself.
>
>> Signed-off-by: Hu Weiwen <sehuww at mail.scut.edu.cn>
>> ---
>
> ...
>
>>
>> @@ -91,9 +92,13 @@ static int erofs_read_raw_data(struct erofs_inode *inode, char *buffer,
>>
>> if (!(map.m_flags & EROFS_MAP_MAPPED)) {
>> if (!map.m_llen) {
>> + /* reached EOF */
>> + memset(buffer + ptr - offset, 0,
>> + offset + size - ptr);
>> ptr = offset + size;
>> continue;
>> }
>> + memset(buffer + map.m_la - offset, 0, map.m_llen);
>
> There might be some minor issue --- `offset' could be larger than
> `map.m_la' if sparse file is supported then.
>
> I made an update version of this to fix these (some cleanup is
> included as well), it would be nice of you to take another look at
> this as well...
>
> Thanks,
> Gao Xiang
>
> From bfbd8ee056aca57a77034b8723f3f828f806747b Mon Sep 17 00:00:00 2001
> From: Hu Weiwen <sehuww at mail.scut.edu.cn>
> Date: Sat, 30 Jan 2021 02:07:47 +0800
> Subject: [PATCH v3] erofs-utils: fuse: fix random readlink error
>
> readlink should fill a **null-terminated** string in the buffer [1].
>
> To achieve this:
> 1) memset(0) for unmapped extents;
> 2) make erofsfuse_read() properly returning the actual bytes read;
> 3) insert a null character if the path is truncated.
>
> [1] https://lore.kernel.org/r/20210121101233.GC6680@DESKTOP-N4CECTO.huww98.cn
> Signed-off-by: Hu Weiwen <sehuww at mail.scut.edu.cn>
> Signed-off-by: Gao Xiang <hsiangkao at aol.com>
> ---
> fuse/main.c | 8 ++++++++
> lib/data.c | 20 ++++++++++++--------
> 2 files changed, 20 insertions(+), 8 deletions(-)
>
It looks good
Reviewed-by: Li Guifu <bluce.lee at aliyun.com>
Thanks,
More information about the Linux-erofs
mailing list