On Thu, 7 Nov 2024 at 09:39, Heinrich Schuchardt
<[email protected]> wrote:
>
> After calling strdup() check the returned pointer.
>
> Avoid a memory leak if the directory is not found.
>
> Reported-by: Michael Nazzareno Trimarchi <[email protected]>
> Fixes: 22fdac381f98 ("fs: ext4: implement opendir, readdir, closedir")
> Signed-off-by: Heinrich Schuchardt <[email protected]>
> ---
>  fs/ext4/ext4fs.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c
> index dfecfa0b4e8..1727da2dc6d 100644
> --- a/fs/ext4/ext4fs.c
> +++ b/fs/ext4/ext4fs.c
> @@ -213,7 +213,7 @@ int ext4fs_opendir(const char *dirname, struct 
> fs_dir_stream **dirsp)
>         if (!dirs)
>                 return -ENOMEM;
>         dirs->dirname = strdup(dirname);
> -       if (!dirs) {
> +       if (!dirs->dirname) {
>                 free(dirs);
>                 return -ENOMEM;
>         }
> @@ -224,6 +224,8 @@ int ext4fs_opendir(const char *dirname, struct 
> fs_dir_stream **dirsp)
>                 ret = 0;
>                 *dirsp = (struct fs_dir_stream *)dirs;
>         } else {
> +               free(dirs->dirname);
> +               free(dirs);
>                 ret = -ENOENT;
>         }
>
> --
> 2.45.2
>

Reviewed-by: Ilias Apalodimas <[email protected]>

Reply via email to