Commit 2db81452 authored by Eric W. Biederman's avatar Eric W. Biederman

userns: Convert apparmor to use kuid and kgid where appropriate

Cc: John Johansen <john.johansen@canonical.com>
Acked-by: default avatarSerge Hallyn <serge.hallyn@canonical.com>
Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
parent e4849737
...@@ -964,7 +964,6 @@ config UIDGID_CONVERTED ...@@ -964,7 +964,6 @@ config UIDGID_CONVERTED
# Security modules # Security modules
depends on SECURITY_TOMOYO = n depends on SECURITY_TOMOYO = n
depends on SECURITY_APPARMOR = n
config UIDGID_STRICT_TYPE_CHECKS config UIDGID_STRICT_TYPE_CHECKS
bool "Require conversions between uid/gids and their internal representation" bool "Require conversions between uid/gids and their internal representation"
......
...@@ -721,7 +721,7 @@ int aa_change_hat(const char *hats[], int count, u64 token, bool permtest) ...@@ -721,7 +721,7 @@ int aa_change_hat(const char *hats[], int count, u64 token, bool permtest)
if (!permtest) if (!permtest)
error = aa_audit_file(profile, &perms, GFP_KERNEL, error = aa_audit_file(profile, &perms, GFP_KERNEL,
OP_CHANGE_HAT, AA_MAY_CHANGEHAT, NULL, OP_CHANGE_HAT, AA_MAY_CHANGEHAT, NULL,
target, 0, info, error); target, GLOBAL_ROOT_UID, info, error);
out: out:
aa_put_profile(hat); aa_put_profile(hat);
...@@ -848,7 +848,7 @@ int aa_change_profile(const char *ns_name, const char *hname, bool onexec, ...@@ -848,7 +848,7 @@ int aa_change_profile(const char *ns_name, const char *hname, bool onexec,
audit: audit:
if (!permtest) if (!permtest)
error = aa_audit_file(profile, &perms, GFP_KERNEL, op, request, error = aa_audit_file(profile, &perms, GFP_KERNEL, op, request,
name, hname, 0, info, error); name, hname, GLOBAL_ROOT_UID, info, error);
aa_put_namespace(ns); aa_put_namespace(ns);
aa_put_profile(target); aa_put_profile(target);
......
...@@ -65,7 +65,7 @@ static void audit_file_mask(struct audit_buffer *ab, u32 mask) ...@@ -65,7 +65,7 @@ static void audit_file_mask(struct audit_buffer *ab, u32 mask)
static void file_audit_cb(struct audit_buffer *ab, void *va) static void file_audit_cb(struct audit_buffer *ab, void *va)
{ {
struct common_audit_data *sa = va; struct common_audit_data *sa = va;
uid_t fsuid = current_fsuid(); kuid_t fsuid = current_fsuid();
if (sa->aad->fs.request & AA_AUDIT_FILE_MASK) { if (sa->aad->fs.request & AA_AUDIT_FILE_MASK) {
audit_log_format(ab, " requested_mask="); audit_log_format(ab, " requested_mask=");
...@@ -76,8 +76,10 @@ static void file_audit_cb(struct audit_buffer *ab, void *va) ...@@ -76,8 +76,10 @@ static void file_audit_cb(struct audit_buffer *ab, void *va)
audit_file_mask(ab, sa->aad->fs.denied); audit_file_mask(ab, sa->aad->fs.denied);
} }
if (sa->aad->fs.request & AA_AUDIT_FILE_MASK) { if (sa->aad->fs.request & AA_AUDIT_FILE_MASK) {
audit_log_format(ab, " fsuid=%d", fsuid); audit_log_format(ab, " fsuid=%d",
audit_log_format(ab, " ouid=%d", sa->aad->fs.ouid); from_kuid(&init_user_ns, fsuid));
audit_log_format(ab, " ouid=%d",
from_kuid(&init_user_ns, sa->aad->fs.ouid));
} }
if (sa->aad->fs.target) { if (sa->aad->fs.target) {
...@@ -103,7 +105,7 @@ static void file_audit_cb(struct audit_buffer *ab, void *va) ...@@ -103,7 +105,7 @@ static void file_audit_cb(struct audit_buffer *ab, void *va)
*/ */
int aa_audit_file(struct aa_profile *profile, struct file_perms *perms, int aa_audit_file(struct aa_profile *profile, struct file_perms *perms,
gfp_t gfp, int op, u32 request, const char *name, gfp_t gfp, int op, u32 request, const char *name,
const char *target, uid_t ouid, const char *info, int error) const char *target, kuid_t ouid, const char *info, int error)
{ {
int type = AUDIT_APPARMOR_AUTO; int type = AUDIT_APPARMOR_AUTO;
struct common_audit_data sa; struct common_audit_data sa;
...@@ -201,7 +203,7 @@ static struct file_perms compute_perms(struct aa_dfa *dfa, unsigned int state, ...@@ -201,7 +203,7 @@ static struct file_perms compute_perms(struct aa_dfa *dfa, unsigned int state,
*/ */
perms.kill = 0; perms.kill = 0;
if (current_fsuid() == cond->uid) { if (uid_eq(current_fsuid(), cond->uid)) {
perms.allow = map_old_perms(dfa_user_allow(dfa, state)); perms.allow = map_old_perms(dfa_user_allow(dfa, state));
perms.audit = map_old_perms(dfa_user_audit(dfa, state)); perms.audit = map_old_perms(dfa_user_audit(dfa, state));
perms.quiet = map_old_perms(dfa_user_quiet(dfa, state)); perms.quiet = map_old_perms(dfa_user_quiet(dfa, state));
......
...@@ -125,7 +125,7 @@ struct apparmor_audit_data { ...@@ -125,7 +125,7 @@ struct apparmor_audit_data {
const char *target; const char *target;
u32 request; u32 request;
u32 denied; u32 denied;
uid_t ouid; kuid_t ouid;
} fs; } fs;
}; };
}; };
......
...@@ -71,7 +71,7 @@ struct path; ...@@ -71,7 +71,7 @@ struct path;
/* need to make conditional which ones are being set */ /* need to make conditional which ones are being set */
struct path_cond { struct path_cond {
uid_t uid; kuid_t uid;
umode_t mode; umode_t mode;
}; };
...@@ -146,7 +146,7 @@ static inline u16 dfa_map_xindex(u16 mask) ...@@ -146,7 +146,7 @@ static inline u16 dfa_map_xindex(u16 mask)
int aa_audit_file(struct aa_profile *profile, struct file_perms *perms, int aa_audit_file(struct aa_profile *profile, struct file_perms *perms,
gfp_t gfp, int op, u32 request, const char *name, gfp_t gfp, int op, u32 request, const char *name,
const char *target, uid_t ouid, const char *info, int error); const char *target, kuid_t ouid, const char *info, int error);
/** /**
* struct aa_file_rules - components used for file rule permissions * struct aa_file_rules - components used for file rule permissions
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment