summaryrefslogtreecommitdiffstats
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
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>
-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) {