Hi Miquel,

Le 18/12/2020 à 19:50, Miquel Raynal a écrit :
Hi Richard,

Richard Genoud <richard.gen...@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.gen...@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.

Reply via email to