diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2021-05-07 12:51:36 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-05-07 12:53:51 +0200 |
commit | 04b42aafb9b17eb1951fc80e1bcd490ae77db14f (patch) | |
tree | 2cf2472138cdd8a2880e2aad281f2dd1dea66ef1 /fs | |
parent | 6f25a81074782649ee9f5d209bd4bf9e40319029 (diff) | |
download | barebox-04b42aafb9b17eb1951fc80e1bcd490ae77db14f.tar.gz barebox-04b42aafb9b17eb1951fc80e1bcd490ae77db14f.tar.xz |
fs: check getname() return value in open()
getname() can return an error when for example the input path is an
empty string. Check the getname() return value in open() before
further using it.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/fs.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -2368,8 +2368,14 @@ int open(const char *pathname, int flags, ...) struct dentry *dentry = NULL; struct nameidata nd; const char *s; + struct filename *filename; + + filename = getname(pathname); + if (IS_ERR(filename)) + return PTR_ERR(filename); + + set_nameidata(&nd, AT_FDCWD, filename); - set_nameidata(&nd, AT_FDCWD, getname(pathname)); s = path_init(&nd, LOOKUP_FOLLOW); while (1) { |