apparmor: move dlopen() into mac_apparmor_use() check

This mirrors what we do for mac_selinux_use(), which also loads
libselinux.
This commit is contained in:
Lennart Poettering
2025-11-20 14:19:56 +01:00
parent 8137c6bf2d
commit c3b3eea2e5
3 changed files with 23 additions and 19 deletions
+1 -7
View File
@@ -20,16 +20,10 @@ int mac_apparmor_setup(void) {
int r;
if (!mac_apparmor_use()) {
log_debug("Skipping AppArmor initialization: not supported by the kernel or disabled.");
log_debug("Skipping AppArmor initialization: not supported by the kernel, is disabled or libapparmor is not installed.");
return 0;
}
r = dlopen_libapparmor();
if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
return 0;
if (r < 0)
return log_error_errno(r, "Failed to load libapparmor: %m");
/* To honor LSM stacking, check per-LSM subdirectory first, and then the generic one as fallback. */
FOREACH_STRING(current_file, "/proc/self/attr/apparmor/current", "/proc/self/attr/current") {
r = read_one_line_file(current_file, &current_profile);
+1 -6
View File
@@ -5751,12 +5751,7 @@ int exec_invoke(
use_smack = mac_smack_use();
#endif
#if HAVE_APPARMOR
if (mac_apparmor_use()) {
r = dlopen_libapparmor();
if (r < 0 && !ERRNO_IS_NEG_NOT_SUPPORTED(r))
log_warning_errno(r, "Failed to load libapparmor, ignoring: %m");
use_apparmor = r >= 0;
}
use_apparmor = mac_apparmor_use();
#endif
}