aboutsummaryrefslogtreecommitdiffstats
path: root/fs/namei.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2020-09-19 17:55:58 +0100
committerAl Viro <viro@zeniv.linux.org.uk>2020-12-10 17:33:17 -0500
commit1a97d899ecbc4b60c8e8f9b41cde443510b5b1bf (patch)
treeb3ca58cd25a8fab06cd0ad67e35346cf52fffbea /fs/namei.c
parent77573fa310d95e4293efdec98dace74cd9e52f43 (diff)
downloadlinux-1a97d899ecbc4b60c8e8f9b41cde443510b5b1bf.tar.gz
Make sure that make_create_in_sticky() never sees uninitialized value of dir_mode
make sure nd->dir_mode is always initialized after success exit from link_path_walk(); in case of empty path it did not happen. Reported-by: Anant Thazhemadam <anant.thazhemadam@gmail.com> Tested-by: Anant Thazhemadam <anant.thazhemadam@gmail.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namei.c')
-rw-r--r--fs/namei.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c
index d4a6dd7723038..fc193c684a573 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2114,8 +2114,10 @@ static int link_path_walk(const char *name, struct nameidata *nd)
return PTR_ERR(name);
while (*name=='/')
name++;
- if (!*name)
+ if (!*name) {
+ nd->dir_mode = 0; // short-circuit the 'hardening' idiocy
return 0;
+ }
/* At this point we know we have a real path component. */
for(;;) {