summaryrefslogtreecommitdiff
path: root/sys/security/mac
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2003-03-26 15:12:03 +0000
committerRobert Watson <rwatson@FreeBSD.org>2003-03-26 15:12:03 +0000
commit5e7ce4785f43ef1e01c5a85bc10c9ddba60076d7 (patch)
treeedbc245cbca8647afd1e19854b10c0489fdc26fe /sys/security/mac
parent1d8aed2b21e40bcac35f402ce180940df88fb1ef (diff)
Notes
Diffstat (limited to 'sys/security/mac')
-rw-r--r--sys/security/mac/mac_framework.c16
-rw-r--r--sys/security/mac/mac_framework.h2
-rw-r--r--sys/security/mac/mac_internal.h16
-rw-r--r--sys/security/mac/mac_net.c16
-rw-r--r--sys/security/mac/mac_pipe.c16
-rw-r--r--sys/security/mac/mac_policy.h2
-rw-r--r--sys/security/mac/mac_process.c16
-rw-r--r--sys/security/mac/mac_syscalls.c16
-rw-r--r--sys/security/mac/mac_system.c16
-rw-r--r--sys/security/mac/mac_vfs.c16
10 files changed, 98 insertions, 34 deletions
diff --git a/sys/security/mac/mac_framework.c b/sys/security/mac/mac_framework.c
index 6b2e6534e10f..17b37d8d1345 100644
--- a/sys/security/mac/mac_framework.c
+++ b/sys/security/mac/mac_framework.c
@@ -697,15 +697,23 @@ mac_init_ifnet(struct ifnet *ifp)
mac_init_ifnet_label(&ifp->if_label);
}
-void
-mac_init_ipq(struct ipq *ipq)
+int
+mac_init_ipq(struct ipq *ipq, int flag)
{
+ int error;
mac_init_label(&ipq->ipq_label);
- MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
+
+ MAC_CHECK(init_ipq_label, &ipq->ipq_label, flag);
+ if (error) {
+ MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
+ mac_destroy_label(&ipq->ipq_label);
+ }
#ifdef MAC_DEBUG
- atomic_add_int(&nmacipqs, 1);
+ if (error == 0)
+ atomic_add_int(&nmacipqs, 1);
#endif
+ return (error);
}
int
diff --git a/sys/security/mac/mac_framework.h b/sys/security/mac/mac_framework.h
index b12ba2acd70f..3cc856d30fa3 100644
--- a/sys/security/mac/mac_framework.h
+++ b/sys/security/mac/mac_framework.h
@@ -133,7 +133,7 @@ void mac_init_bpfdesc(struct bpf_d *);
void mac_init_cred(struct ucred *);
void mac_init_devfsdirent(struct devfs_dirent *);
void mac_init_ifnet(struct ifnet *);
-void mac_init_ipq(struct ipq *);
+int mac_init_ipq(struct ipq *, int flag);
int mac_init_socket(struct socket *, int flag);
void mac_init_pipe(struct pipe *);
int mac_init_mbuf(struct mbuf *m, int flag);
diff --git a/sys/security/mac/mac_internal.h b/sys/security/mac/mac_internal.h
index 6b2e6534e10f..17b37d8d1345 100644
--- a/sys/security/mac/mac_internal.h
+++ b/sys/security/mac/mac_internal.h
@@ -697,15 +697,23 @@ mac_init_ifnet(struct ifnet *ifp)
mac_init_ifnet_label(&ifp->if_label);
}
-void
-mac_init_ipq(struct ipq *ipq)
+int
+mac_init_ipq(struct ipq *ipq, int flag)
{
+ int error;
mac_init_label(&ipq->ipq_label);
- MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
+
+ MAC_CHECK(init_ipq_label, &ipq->ipq_label, flag);
+ if (error) {
+ MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
+ mac_destroy_label(&ipq->ipq_label);
+ }
#ifdef MAC_DEBUG
- atomic_add_int(&nmacipqs, 1);
+ if (error == 0)
+ atomic_add_int(&nmacipqs, 1);
#endif
+ return (error);
}
int
diff --git a/sys/security/mac/mac_net.c b/sys/security/mac/mac_net.c
index 6b2e6534e10f..17b37d8d1345 100644
--- a/sys/security/mac/mac_net.c
+++ b/sys/security/mac/mac_net.c
@@ -697,15 +697,23 @@ mac_init_ifnet(struct ifnet *ifp)
mac_init_ifnet_label(&ifp->if_label);
}
-void
-mac_init_ipq(struct ipq *ipq)
+int
+mac_init_ipq(struct ipq *ipq, int flag)
{
+ int error;
mac_init_label(&ipq->ipq_label);
- MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
+
+ MAC_CHECK(init_ipq_label, &ipq->ipq_label, flag);
+ if (error) {
+ MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
+ mac_destroy_label(&ipq->ipq_label);
+ }
#ifdef MAC_DEBUG
- atomic_add_int(&nmacipqs, 1);
+ if (error == 0)
+ atomic_add_int(&nmacipqs, 1);
#endif
+ return (error);
}
int
diff --git a/sys/security/mac/mac_pipe.c b/sys/security/mac/mac_pipe.c
index 6b2e6534e10f..17b37d8d1345 100644
--- a/sys/security/mac/mac_pipe.c
+++ b/sys/security/mac/mac_pipe.c
@@ -697,15 +697,23 @@ mac_init_ifnet(struct ifnet *ifp)
mac_init_ifnet_label(&ifp->if_label);
}
-void
-mac_init_ipq(struct ipq *ipq)
+int
+mac_init_ipq(struct ipq *ipq, int flag)
{
+ int error;
mac_init_label(&ipq->ipq_label);
- MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
+
+ MAC_CHECK(init_ipq_label, &ipq->ipq_label, flag);
+ if (error) {
+ MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
+ mac_destroy_label(&ipq->ipq_label);
+ }
#ifdef MAC_DEBUG
- atomic_add_int(&nmacipqs, 1);
+ if (error == 0)
+ atomic_add_int(&nmacipqs, 1);
#endif
+ return (error);
}
int
diff --git a/sys/security/mac/mac_policy.h b/sys/security/mac/mac_policy.h
index d536f05659f6..4e00577587c6 100644
--- a/sys/security/mac/mac_policy.h
+++ b/sys/security/mac/mac_policy.h
@@ -73,7 +73,7 @@ struct mac_policy_ops {
void (*mpo_init_cred_label)(struct label *label);
void (*mpo_init_devfsdirent_label)(struct label *label);
void (*mpo_init_ifnet_label)(struct label *label);
- void (*mpo_init_ipq_label)(struct label *label);
+ int (*mpo_init_ipq_label)(struct label *label, int flag);
int (*mpo_init_mbuf_label)(struct label *label, int flag);
void (*mpo_init_mount_label)(struct label *label);
void (*mpo_init_mount_fs_label)(struct label *label);
diff --git a/sys/security/mac/mac_process.c b/sys/security/mac/mac_process.c
index 6b2e6534e10f..17b37d8d1345 100644
--- a/sys/security/mac/mac_process.c
+++ b/sys/security/mac/mac_process.c
@@ -697,15 +697,23 @@ mac_init_ifnet(struct ifnet *ifp)
mac_init_ifnet_label(&ifp->if_label);
}
-void
-mac_init_ipq(struct ipq *ipq)
+int
+mac_init_ipq(struct ipq *ipq, int flag)
{
+ int error;
mac_init_label(&ipq->ipq_label);
- MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
+
+ MAC_CHECK(init_ipq_label, &ipq->ipq_label, flag);
+ if (error) {
+ MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
+ mac_destroy_label(&ipq->ipq_label);
+ }
#ifdef MAC_DEBUG
- atomic_add_int(&nmacipqs, 1);
+ if (error == 0)
+ atomic_add_int(&nmacipqs, 1);
#endif
+ return (error);
}
int
diff --git a/sys/security/mac/mac_syscalls.c b/sys/security/mac/mac_syscalls.c
index 6b2e6534e10f..17b37d8d1345 100644
--- a/sys/security/mac/mac_syscalls.c
+++ b/sys/security/mac/mac_syscalls.c
@@ -697,15 +697,23 @@ mac_init_ifnet(struct ifnet *ifp)
mac_init_ifnet_label(&ifp->if_label);
}
-void
-mac_init_ipq(struct ipq *ipq)
+int
+mac_init_ipq(struct ipq *ipq, int flag)
{
+ int error;
mac_init_label(&ipq->ipq_label);
- MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
+
+ MAC_CHECK(init_ipq_label, &ipq->ipq_label, flag);
+ if (error) {
+ MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
+ mac_destroy_label(&ipq->ipq_label);
+ }
#ifdef MAC_DEBUG
- atomic_add_int(&nmacipqs, 1);
+ if (error == 0)
+ atomic_add_int(&nmacipqs, 1);
#endif
+ return (error);
}
int
diff --git a/sys/security/mac/mac_system.c b/sys/security/mac/mac_system.c
index 6b2e6534e10f..17b37d8d1345 100644
--- a/sys/security/mac/mac_system.c
+++ b/sys/security/mac/mac_system.c
@@ -697,15 +697,23 @@ mac_init_ifnet(struct ifnet *ifp)
mac_init_ifnet_label(&ifp->if_label);
}
-void
-mac_init_ipq(struct ipq *ipq)
+int
+mac_init_ipq(struct ipq *ipq, int flag)
{
+ int error;
mac_init_label(&ipq->ipq_label);
- MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
+
+ MAC_CHECK(init_ipq_label, &ipq->ipq_label, flag);
+ if (error) {
+ MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
+ mac_destroy_label(&ipq->ipq_label);
+ }
#ifdef MAC_DEBUG
- atomic_add_int(&nmacipqs, 1);
+ if (error == 0)
+ atomic_add_int(&nmacipqs, 1);
#endif
+ return (error);
}
int
diff --git a/sys/security/mac/mac_vfs.c b/sys/security/mac/mac_vfs.c
index 6b2e6534e10f..17b37d8d1345 100644
--- a/sys/security/mac/mac_vfs.c
+++ b/sys/security/mac/mac_vfs.c
@@ -697,15 +697,23 @@ mac_init_ifnet(struct ifnet *ifp)
mac_init_ifnet_label(&ifp->if_label);
}
-void
-mac_init_ipq(struct ipq *ipq)
+int
+mac_init_ipq(struct ipq *ipq, int flag)
{
+ int error;
mac_init_label(&ipq->ipq_label);
- MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
+
+ MAC_CHECK(init_ipq_label, &ipq->ipq_label, flag);
+ if (error) {
+ MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
+ mac_destroy_label(&ipq->ipq_label);
+ }
#ifdef MAC_DEBUG
- atomic_add_int(&nmacipqs, 1);
+ if (error == 0)
+ atomic_add_int(&nmacipqs, 1);
#endif
+ return (error);
}
int