fs: ext4: correct error handling

After calling strdup() check the returned pointer.

Avoid a memory leak if the directory is not found.

Reported-by: Michael Nazzareno Trimarchi <michael@amarulasolutions.com>
Fixes: 22fdac381f ("fs: ext4: implement opendir, readdir, closedir")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
Heinrich Schuchardt 2024-11-07 10:38:53 +01:00 committed by Tom Rini
parent bbc3d12516
commit 9084e1b1b9

View file

@ -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;
}