[PATCH] fs: squasfs: fix a possible NULL pointer dereference in sqfs_opendir()
Richard Genoud
richard.genoud at posteo.net
Mon Dec 21 16:06:37 CET 2020
Hi Miquel,
Le 18/12/2020 à 19:50, Miquel Raynal a écrit :
> Hi Richard,
>
> Richard Genoud <richard.genoud at posteo.net> wrote on Fri, 18 Dec 2020
> 15:24:40 +0100:
>
>> token_count may be != 0 and token_list not yet allocated when the out
>> code is reached
>
> Wouldn't it be better to initialize token_count than adding an
> (obscure) indentation level?
Well, token_count is initialized :
token_count = sqfs_count_tokens(filename);
But token_list is not yet populated. It is some lines bellow:
token_list = malloc(token_count * sizeof(char *));
But I could use something like that, maybe it's clearer :
for (j = 0; (token_list != NULL) && (j < token_count); j++)
free(token_list[j]);
>
>>
>> Reported-by: Coverity CID 313547
>> Fixes: ea1b1651c6a8 ("fs/squashfs: sqfs_opendir: simplify error handling")
>> Signed-off-by: Richard Genoud <richard.genoud at posteo.net>
>> ---
>> fs/squashfs/sqfs.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/squashfs/sqfs.c b/fs/squashfs/sqfs.c
>> index 608a2bb454c..c47046b76e5 100644
>> --- a/fs/squashfs/sqfs.c
>> +++ b/fs/squashfs/sqfs.c
>> @@ -949,8 +949,9 @@ int sqfs_opendir(const char *filename, struct fs_dir_stream **dirsp)
>> *dirsp = (struct fs_dir_stream *)dirs;
>>
>> out:
>> - for (j = 0; j < token_count; j++)
>> - free(token_list[j]);
>> + if (token_list)
>> + for (j = 0; j < token_count; j++)
>> + free(token_list[j]);
>> free(token_list);
>> free(pos_list);
>> free(path);
>
> Thanks,
> Miquèl
>
Thanks
Richard.
More information about the U-Boot
mailing list