diff options
author | Heinrich Schuchardt <heinrich.schuchardt@canonical.com> | 2024-11-07 10:38:53 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-11-13 08:18:50 -0600 |
commit | 9084e1b1b94c31d76ae7efd12f8828f3b4ed2255 (patch) | |
tree | 5843b1e1160c03dba717037008d820b4af8b4c6e /fs/ext4/ext4fs.c | |
parent | bbc3d12516ec759379d71819ff49b8574f233aec (diff) |
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: 22fdac381f98 ("fs: ext4: implement opendir, readdir, closedir")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Diffstat (limited to 'fs/ext4/ext4fs.c')
-rw-r--r-- | fs/ext4/ext4fs.c | 4 |
1 files changed, 3 insertions, 1 deletions
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; } |