diff options
| author | Massimiliano Pellizzer <massimiliano.pellizzer@canonical.com> | 2026-01-13 09:09:43 +0100 |
|---|---|---|
| committer | John Johansen <john.johansen@canonical.com> | 2026-03-09 16:05:42 -0700 |
| commit | ab09264660f9de5d05d1ef4e225aa447c63a8747 (patch) | |
| tree | ba08e540707d5d3fc5a437db8247ecfb357fc646 /tools/perf/scripts/python | |
| parent | e38c55d9f834e5b848bfed0f5c586aaf45acb825 (diff) | |
| download | linux-ab09264660f9de5d05d1ef4e225aa447c63a8747.tar.gz linux-ab09264660f9de5d05d1ef4e225aa447c63a8747.zip | |
apparmor: replace recursive profile removal with iterative approach
The profile removal code uses recursion when removing nested profiles,
which can lead to kernel stack exhaustion and system crashes.
Reproducer:
$ pf='a'; for ((i=0; i<1024; i++)); do
echo -e "profile $pf { \n }" | apparmor_parser -K -a;
pf="$pf//x";
done
$ echo -n a > /sys/kernel/security/apparmor/.remove
Replace the recursive __aa_profile_list_release() approach with an
iterative approach in __remove_profile(). The function repeatedly
finds and removes leaf profiles until the entire subtree is removed,
maintaining the same removal semantic without recursion.
Fixes: c88d4c7b049e ("AppArmor: core policy routines")
Reported-by: Qualys Security Advisory <qsa@qualys.com>
Tested-by: Salvatore Bonaccorso <carnil@debian.org>
Reviewed-by: Georgia Garcia <georgia.garcia@canonical.com>
Reviewed-by: Cengiz Can <cengiz.can@canonical.com>
Signed-off-by: Massimiliano Pellizzer <massimiliano.pellizzer@canonical.com>
Signed-off-by: John Johansen <john.johansen@canonical.com>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
