summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2021-05-07 12:51:36 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-05-07 12:53:51 +0200
commit04b42aafb9b17eb1951fc80e1bcd490ae77db14f (patch)
tree2cf2472138cdd8a2880e2aad281f2dd1dea66ef1 /fs
parent6f25a81074782649ee9f5d209bd4bf9e40319029 (diff)
downloadbarebox-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.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/fs.c b/fs/fs.c
index 2eaf7eaa37..f4baba81e7 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -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) {