Deleted Added
full compact
mac_biba.c (109623) mac_biba.c (110350)
1/*-
2 * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
3 * Copyright (c) 2001, 2002 Networks Associates Technology, Inc.
4 * All rights reserved.
5 *
6 * This software was developed by Robert Watson for the TrustedBSD Project.
7 *
8 * This software was developed for the FreeBSD Project in part by Network

--- 17 unchanged lines hidden (view full) ---

26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
1/*-
2 * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
3 * Copyright (c) 2001, 2002 Networks Associates Technology, Inc.
4 * All rights reserved.
5 *
6 * This software was developed by Robert Watson for the TrustedBSD Project.
7 *
8 * This software was developed for the FreeBSD Project in part by Network

--- 17 unchanged lines hidden (view full) ---

26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * $FreeBSD: head/sys/security/mac_biba/mac_biba.c 109623 2003-01-21 08:56:16Z alfred $
34 * $FreeBSD: head/sys/security/mac_biba/mac_biba.c 110350 2003-02-04 21:00:51Z rwatson $
35 */
36
37/*
38 * Developed by the TrustedBSD Project.
39 * Biba fixed label mandatory integrity policy.
40 */
41
42#include <sys/types.h>

--- 1079 unchanged lines hidden (view full) ---

1122}
1123
1124static void
1125mac_biba_create_ifnet(struct ifnet *ifnet, struct label *ifnetlabel)
1126{
1127 char tifname[IFNAMSIZ], ifname[IFNAMSIZ], *p, *q;
1128 char tiflist[sizeof(trusted_interfaces)];
1129 struct mac_biba *dest;
35 */
36
37/*
38 * Developed by the TrustedBSD Project.
39 * Biba fixed label mandatory integrity policy.
40 */
41
42#include <sys/types.h>

--- 1079 unchanged lines hidden (view full) ---

1122}
1123
1124static void
1125mac_biba_create_ifnet(struct ifnet *ifnet, struct label *ifnetlabel)
1126{
1127 char tifname[IFNAMSIZ], ifname[IFNAMSIZ], *p, *q;
1128 char tiflist[sizeof(trusted_interfaces)];
1129 struct mac_biba *dest;
1130 int len, grade;
1130 int len, type;
1131
1132 dest = SLOT(ifnetlabel);
1133
1134 if (ifnet->if_type == IFT_LOOP) {
1131
1132 dest = SLOT(ifnetlabel);
1133
1134 if (ifnet->if_type == IFT_LOOP) {
1135 grade = MAC_BIBA_TYPE_EQUAL;
1135 type = MAC_BIBA_TYPE_EQUAL;
1136 goto set;
1137 }
1138
1139 if (trust_all_interfaces) {
1136 goto set;
1137 }
1138
1139 if (trust_all_interfaces) {
1140 grade = MAC_BIBA_TYPE_HIGH;
1140 type = MAC_BIBA_TYPE_HIGH;
1141 goto set;
1142 }
1143
1141 goto set;
1142 }
1143
1144 grade = MAC_BIBA_TYPE_LOW;
1144 type = MAC_BIBA_TYPE_LOW;
1145
1146 if (trusted_interfaces[0] == '\0' ||
1147 !strvalid(trusted_interfaces, sizeof(trusted_interfaces)))
1148 goto set;
1149
1150 bzero(tiflist, sizeof(tiflist));
1151 for (p = trusted_interfaces, q = tiflist; *p != '\0'; p++, q++)
1152 if(*p != ' ' && *p != '\t')
1153 *q = *p;
1154
1155 snprintf(ifname, IFNAMSIZ, "%s%d", ifnet->if_name, ifnet->if_unit);
1156
1157 for (p = q = tiflist;; p++) {
1158 if (*p == ',' || *p == '\0') {
1159 len = p - q;
1160 if (len < IFNAMSIZ) {
1161 bzero(tifname, sizeof(tifname));
1162 bcopy(q, tifname, len);
1163 if (strcmp(tifname, ifname) == 0) {
1145
1146 if (trusted_interfaces[0] == '\0' ||
1147 !strvalid(trusted_interfaces, sizeof(trusted_interfaces)))
1148 goto set;
1149
1150 bzero(tiflist, sizeof(tiflist));
1151 for (p = trusted_interfaces, q = tiflist; *p != '\0'; p++, q++)
1152 if(*p != ' ' && *p != '\t')
1153 *q = *p;
1154
1155 snprintf(ifname, IFNAMSIZ, "%s%d", ifnet->if_name, ifnet->if_unit);
1156
1157 for (p = q = tiflist;; p++) {
1158 if (*p == ',' || *p == '\0') {
1159 len = p - q;
1160 if (len < IFNAMSIZ) {
1161 bzero(tifname, sizeof(tifname));
1162 bcopy(q, tifname, len);
1163 if (strcmp(tifname, ifname) == 0) {
1164 grade = MAC_BIBA_TYPE_HIGH;
1164 type = MAC_BIBA_TYPE_HIGH;
1165 break;
1166 }
1167 } else {
1168 *p = '\0';
1169 printf("mac_biba warning: interface name "
1170 "\"%s\" is too long (must be < %d)\n",
1171 q, IFNAMSIZ);
1172 }
1173 if (*p == '\0')
1174 break;
1175 q = p + 1;
1176 }
1177 }
1178set:
1165 break;
1166 }
1167 } else {
1168 *p = '\0';
1169 printf("mac_biba warning: interface name "
1170 "\"%s\" is too long (must be < %d)\n",
1171 q, IFNAMSIZ);
1172 }
1173 if (*p == '\0')
1174 break;
1175 q = p + 1;
1176 }
1177 }
1178set:
1179 mac_biba_set_single(dest, grade, 0, NULL);
1180 mac_biba_set_range(dest, grade, 0, NULL, grade, 0, NULL);
1179 mac_biba_set_single(dest, type, 0, NULL);
1180 mac_biba_set_range(dest, type, 0, NULL, type, 0, NULL);
1181}
1182
1183static void
1184mac_biba_create_ipq(struct mbuf *fragment, struct label *fragmentlabel,
1185 struct ipq *ipq, struct label *ipqlabel)
1186{
1187 struct mac_biba *source, *dest;
1188

--- 1483 unchanged lines hidden ---
1181}
1182
1183static void
1184mac_biba_create_ipq(struct mbuf *fragment, struct label *fragmentlabel,
1185 struct ipq *ipq, struct label *ipqlabel)
1186{
1187 struct mac_biba *source, *dest;
1188

--- 1483 unchanged lines hidden ---