82 lines
1.8 KiB
C
82 lines
1.8 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||
|
/*
|
||
|
* AppArmor security module
|
||
|
*
|
||
|
* This file contains AppArmor ipc mediation function definitions.
|
||
|
*
|
||
|
* Copyright (C) 1998-2008 Novell/SUSE
|
||
|
* Copyright 2009-2017 Canonical Ltd.
|
||
|
*/
|
||
|
|
||
|
#ifndef __AA_IPC_H
|
||
|
#define __AA_IPC_H
|
||
|
|
||
|
#include <linux/msg.h>
|
||
|
#include <linux/sched.h>
|
||
|
|
||
|
#include "inode.h"
|
||
|
#include "perms.h"
|
||
|
|
||
|
#define SIGUNKNOWN 0
|
||
|
#define MAXMAPPED_SIG 35
|
||
|
|
||
|
struct aa_msg_sec {
|
||
|
struct aa_label *label;
|
||
|
};
|
||
|
|
||
|
struct aa_ipc_sec {
|
||
|
struct aa_label *label;
|
||
|
};
|
||
|
|
||
|
static inline struct aa_ipc_sec *apparmor_ipc(const struct kern_ipc_perm *ipc)
|
||
|
{
|
||
|
return ipc->security + apparmor_blob_sizes.lbs_ipc;
|
||
|
}
|
||
|
|
||
|
static inline struct aa_msg_sec *apparmor_msg_msg(const struct msg_msg *msg_msg)
|
||
|
{
|
||
|
return msg_msg->security + apparmor_blob_sizes.lbs_msg_msg;
|
||
|
}
|
||
|
|
||
|
|
||
|
static inline bool is_mqueue_sb(struct super_block *sb)
|
||
|
{
|
||
|
if (!sb)
|
||
|
pr_warn("mqueue sb == NULL\n");
|
||
|
if (!sb && !sb->s_type->name)
|
||
|
pr_warn("mqueue sb name == NULL\n");
|
||
|
return sb && sb->s_type->name && strcmp(sb->s_type->name, "mqueue") == 0;
|
||
|
}
|
||
|
|
||
|
static inline bool is_mqueue_inode(struct inode *i)
|
||
|
{
|
||
|
struct aa_inode_sec *isec;
|
||
|
|
||
|
if (!i)
|
||
|
return false;
|
||
|
|
||
|
isec = apparmor_inode(i);
|
||
|
return isec && isec->sclass == AA_CLASS_POSIX_MQUEUE;
|
||
|
}
|
||
|
|
||
|
int aa_may_signal(const struct cred *subj_cred, struct aa_label *sender,
|
||
|
const struct cred *target_cred, struct aa_label *target,
|
||
|
int sig);
|
||
|
|
||
|
#define AA_AUDIT_POSIX_MQUEUE_MASK (AA_MAY_WRITE | AA_MAY_READ | \
|
||
|
AA_MAY_CREATE | AA_MAY_DELETE | \
|
||
|
AA_MAY_OPEN | AA_MAY_SETATTR | \
|
||
|
AA_MAY_GETATTR)
|
||
|
|
||
|
|
||
|
int aa_profile_mqueue_perm(struct aa_profile *profile,
|
||
|
const struct path *path,
|
||
|
u32 request, char *buffer,
|
||
|
struct apparmor_audit_data *ad);
|
||
|
|
||
|
int aa_mqueue_perm(const char *op, const struct cred *subj_cred,
|
||
|
struct aa_label *label,
|
||
|
const struct path *path, u32 request);
|
||
|
|
||
|
#endif /* __AA_IPC_H */
|