android_kernel_xiaomi_sm8450/security/tomoyo
Tetsuo Handa 68e579316c tomoyo: fallback to realpath if symlink's pathname does not exist
commit ada1986d07976d60bed5017aa38b7f7cf27883f7 upstream.

Alfred Agrell found that TOMOYO cannot handle execveat(AT_EMPTY_PATH)
inside chroot environment where /dev and /proc are not mounted, for
commit 51f39a1f0c ("syscalls: implement execveat() system call") missed
that TOMOYO tries to canonicalize argv[0] when the filename fed to the
executed program as argv[0] is supplied using potentially nonexistent
pathname.

Since "/dev/fd/<fd>" already lost symlink information used for obtaining
that <fd>, it is too late to reconstruct symlink's pathname. Although
<filename> part of "/dev/fd/<fd>/<filename>" might not be canonicalized,
TOMOYO cannot use tomoyo_realpath_nofollow() when /dev or /proc is not
mounted. Therefore, fallback to tomoyo_realpath_from_path() when
tomoyo_realpath_nofollow() failed.

Reported-by: Alfred Agrell <blubban@gmail.com>
Closes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1082001
Fixes: 51f39a1f0c ("syscalls: implement execveat() system call")
Cc: stable@vger.kernel.org # v3.19+
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-10-17 15:08:24 +02:00
..
policy tomoyo: Do not generate empty policy files 2015-04-07 21:27:45 +02:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
audit.c tomoyo: Coding style fix. 2019-01-24 14:50:27 -08:00
common.c tomoyo: fix UAF write bug in tomoyo_write_control() 2024-03-06 14:37:49 +00:00
common.h exec: Implement kernel_execve 2020-07-21 08:24:52 -05:00
condition.c tomoyo: Coding style fix. 2019-01-24 14:50:27 -08:00
domain.c tomoyo: fallback to realpath if symlink's pathname does not exist 2024-10-17 15:08:24 +02:00
environ.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
file.c tomoyo: ignore data race while checking quota 2021-03-07 12:34:05 +01:00
gc.c tomoyo: Coding style fix. 2019-01-24 14:50:27 -08:00
group.c tomoyo: Suppress RCU warning at list_for_each_entry_rcu(). 2019-12-16 23:02:27 +09:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
load_policy.c TOMOYO: fix __setup handlers return values 2022-04-08 14:40:18 +02:00
Makefile tomoyo: fix broken dependency on *.conf.default 2023-02-01 08:23:10 +01:00
memory.c tomoyo: Coding style fix. 2019-01-24 14:50:27 -08:00
mount.c tomoyo: Coding style fix. 2019-01-24 14:50:27 -08:00
network.c tomoyo: recognize kernel threads correctly 2021-03-09 11:11:15 +01:00
realpath.c proc: proc_pid_ns takes super_block as an argument 2020-05-19 07:07:50 -05:00
securityfs_if.c tomoyo: Coding style fix. 2019-01-24 14:50:27 -08:00
tomoyo.c lsm: new security_file_ioctl_compat() hook 2024-02-23 08:41:53 +01:00
util.c tomoyo: use hwight16() in tomoyo_domain_quota_is_ok() 2022-01-05 12:40:29 +01:00