mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 08:24:42 +01:00
30 lines
875 B
Diff
30 lines
875 B
Diff
From: Andreas Gruenbacher <agruen@suse.de>
|
|
Subject: Make getcwd() only return valid paths
|
|
|
|
Make getcwd() fail with -ENOENT if the current working directory is
|
|
disconnected: the process is not asking for some previous name of that
|
|
directory but for the current name; returning a path meaningless in the
|
|
context of that process makes no sense.
|
|
|
|
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
|
|
|
|
---
|
|
fs/dcache.c | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
--- a/fs/dcache.c
|
|
+++ b/fs/dcache.c
|
|
@@ -1910,10 +1910,12 @@ asmlinkage long sys_getcwd(char __user *
|
|
read_unlock(¤t->fs->lock);
|
|
|
|
cwd = __d_path(pwd, pwdmnt, root, rootmnt, page, PAGE_SIZE, 1);
|
|
- cwd = __connect_d_path(cwd, page);
|
|
error = PTR_ERR(cwd);
|
|
if (IS_ERR(cwd))
|
|
goto out;
|
|
+ error = -ENOENT;
|
|
+ if (*cwd != '/')
|
|
+ goto out;
|
|
|
|
error = -ERANGE;
|
|
len = PAGE_SIZE + page - cwd;
|