Remove the posixsem_check_destroy() MAC check. It is semantically identical
to doing a MAC check for close(), but no other types of close() (including close(2) and ksem_close(2)) have MAC checks. Discussed with: rwatson
This commit is contained in:
parent
2794059010
commit
c4f3a35a54
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=179963
@ -807,11 +807,6 @@ ksem_destroy(struct thread *td, struct ksem_destroy_args *uap)
|
||||
error = EINVAL;
|
||||
goto err;
|
||||
}
|
||||
#ifdef MAC
|
||||
error = mac_posixsem_check_destroy(td->td_ucred, ks);
|
||||
if (error)
|
||||
goto err;
|
||||
#endif
|
||||
if (ks->ks_waiters != 0) {
|
||||
error = EBUSY;
|
||||
goto err;
|
||||
|
@ -189,7 +189,6 @@ void mac_pipe_init(struct pipepair *);
|
||||
int mac_pipe_label_set(struct ucred *cred, struct pipepair *pp,
|
||||
struct label *label);
|
||||
|
||||
int mac_posixsem_check_destroy(struct ucred *cred, struct ksem *ks);
|
||||
int mac_posixsem_check_getvalue(struct ucred *cred,struct ksem *ks);
|
||||
int mac_posixsem_check_open(struct ucred *cred, struct ksem *ks);
|
||||
int mac_posixsem_check_post(struct ucred *cred, struct ksem *ks);
|
||||
|
@ -288,8 +288,6 @@ typedef int (*mpo_pipe_internalize_label_t)(struct label *label,
|
||||
typedef void (*mpo_pipe_relabel_t)(struct ucred *cred, struct pipepair *pp,
|
||||
struct label *oldlabel, struct label *newlabel);
|
||||
|
||||
typedef int (*mpo_posixsem_check_destroy_t)(struct ucred *cred,
|
||||
struct ksem *ks, struct label *kslabel);
|
||||
typedef int (*mpo_posixsem_check_getvalue_t)(struct ucred *cred,
|
||||
struct ksem *ks, struct label *kslabel);
|
||||
typedef int (*mpo_posixsem_check_open_t)(struct ucred *cred,
|
||||
@ -741,7 +739,6 @@ struct mac_policy_ops {
|
||||
mpo_pipe_internalize_label_t mpo_pipe_internalize_label;
|
||||
mpo_pipe_relabel_t mpo_pipe_relabel;
|
||||
|
||||
mpo_posixsem_check_destroy_t mpo_posixsem_check_destroy;
|
||||
mpo_posixsem_check_getvalue_t mpo_posixsem_check_getvalue;
|
||||
mpo_posixsem_check_open_t mpo_posixsem_check_open;
|
||||
mpo_posixsem_check_post_t mpo_posixsem_check_post;
|
||||
|
@ -90,16 +90,6 @@ mac_posixsem_create(struct ucred *cred, struct ksem *ks)
|
||||
MAC_PERFORM(posixsem_create, cred, ks, ks->ks_label);
|
||||
}
|
||||
|
||||
int
|
||||
mac_posixsem_check_destroy(struct ucred *cred, struct ksem *ks)
|
||||
{
|
||||
int error;
|
||||
|
||||
MAC_CHECK(posixsem_check_destroy, cred, ks, ks->ks_label);
|
||||
|
||||
return (error);
|
||||
}
|
||||
|
||||
int
|
||||
mac_posixsem_check_open(struct ucred *cred, struct ksem *ks)
|
||||
{
|
||||
|
@ -3334,7 +3334,6 @@ static struct mac_policy_ops mac_biba_ops =
|
||||
.mpo_pipe_internalize_label = biba_internalize_label,
|
||||
.mpo_pipe_relabel = biba_pipe_relabel,
|
||||
|
||||
.mpo_posixsem_check_destroy = biba_posixsem_check_write,
|
||||
.mpo_posixsem_check_getvalue = biba_posixsem_check_rdonly,
|
||||
.mpo_posixsem_check_open = biba_posixsem_check_write,
|
||||
.mpo_posixsem_check_post = biba_posixsem_check_write,
|
||||
|
@ -2957,7 +2957,6 @@ static struct mac_policy_ops mls_ops =
|
||||
.mpo_pipe_internalize_label = mls_internalize_label,
|
||||
.mpo_pipe_relabel = mls_pipe_relabel,
|
||||
|
||||
.mpo_posixsem_check_destroy = mls_posixsem_check_write,
|
||||
.mpo_posixsem_check_getvalue = mls_posixsem_check_rdonly,
|
||||
.mpo_posixsem_check_open = mls_posixsem_check_write,
|
||||
.mpo_posixsem_check_post = mls_posixsem_check_write,
|
||||
|
@ -522,14 +522,6 @@ stub_pipe_relabel(struct ucred *cred, struct pipepair *pp,
|
||||
|
||||
}
|
||||
|
||||
static int
|
||||
stub_posixsem_check_destroy(struct ucred *cred, struct ksem *ks,
|
||||
struct label *kslabel)
|
||||
{
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
stub_posixsem_check_getvalue(struct ucred *cred, struct ksem *ks,
|
||||
struct label *kslabel)
|
||||
@ -1587,7 +1579,6 @@ static struct mac_policy_ops stub_ops =
|
||||
.mpo_pipe_internalize_label = stub_internalize_label,
|
||||
.mpo_pipe_relabel = stub_pipe_relabel,
|
||||
|
||||
.mpo_posixsem_check_destroy = stub_posixsem_check_destroy,
|
||||
.mpo_posixsem_check_getvalue = stub_posixsem_check_getvalue,
|
||||
.mpo_posixsem_check_open = stub_posixsem_check_open,
|
||||
.mpo_posixsem_check_post = stub_posixsem_check_post,
|
||||
|
@ -1010,19 +1010,6 @@ test_pipe_relabel(struct ucred *cred, struct pipepair *pp,
|
||||
COUNTER_INC(pipe_relabel);
|
||||
}
|
||||
|
||||
COUNTER_DECL(posixsem_check_destroy);
|
||||
static int
|
||||
test_posixsem_check_destroy(struct ucred *cred, struct ksem *ks,
|
||||
struct label *kslabel)
|
||||
{
|
||||
|
||||
LABEL_CHECK(cred->cr_label, MAGIC_CRED);
|
||||
LABEL_CHECK(kslabel, MAGIC_POSIX_SEM);
|
||||
COUNTER_INC(posixsem_check_destroy);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
COUNTER_DECL(posixsem_check_getvalue);
|
||||
static int
|
||||
test_posixsem_check_getvalue(struct ucred *cred, struct ksem *ks,
|
||||
@ -2886,7 +2873,6 @@ static struct mac_policy_ops test_ops =
|
||||
.mpo_pipe_internalize_label = test_pipe_internalize_label,
|
||||
.mpo_pipe_relabel = test_pipe_relabel,
|
||||
|
||||
.mpo_posixsem_check_destroy = test_posixsem_check_destroy,
|
||||
.mpo_posixsem_check_getvalue = test_posixsem_check_getvalue,
|
||||
.mpo_posixsem_check_open = test_posixsem_check_open,
|
||||
.mpo_posixsem_check_post = test_posixsem_check_post,
|
||||
|
Loading…
Reference in New Issue
Block a user