MCPcopy Create free account
hub / github.com/F-Stack/f-stack / lomac_ifnet_create

Function lomac_ifnet_create

freebsd/security/mac_lomac/mac_lomac.c:1171–1227  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1169}
1170
1171static void
1172lomac_ifnet_create(struct ifnet *ifp, struct label *ifplabel)
1173{
1174 char tifname[IFNAMSIZ], *p, *q;
1175 char tiflist[sizeof(trusted_interfaces)];
1176 struct mac_lomac *dest;
1177 int len, grade;
1178
1179 dest = SLOT(ifplabel);
1180
1181 if (ifp->if_type == IFT_LOOP) {
1182 grade = MAC_LOMAC_TYPE_EQUAL;
1183 goto set;
1184 }
1185
1186 if (trust_all_interfaces) {
1187 grade = MAC_LOMAC_TYPE_HIGH;
1188 goto set;
1189 }
1190
1191 grade = MAC_LOMAC_TYPE_LOW;
1192
1193 if (trusted_interfaces[0] == '\0' ||
1194 !strvalid(trusted_interfaces, sizeof(trusted_interfaces)))
1195 goto set;
1196
1197 bzero(tiflist, sizeof(tiflist));
1198 for (p = trusted_interfaces, q = tiflist; *p != '\0'; p++, q++)
1199 if(*p != ' ' && *p != '\t')
1200 *q = *p;
1201
1202 for (p = q = tiflist;; p++) {
1203 if (*p == ',' || *p == '\0') {
1204 len = p - q;
1205 if (len < IFNAMSIZ) {
1206 bzero(tifname, sizeof(tifname));
1207 bcopy(q, tifname, len);
1208 if (strcmp(tifname, ifp->if_xname) == 0) {
1209 grade = MAC_LOMAC_TYPE_HIGH;
1210 break;
1211 }
1212 }
1213 else {
1214 *p = '\0';
1215 printf("MAC/LOMAC warning: interface name "
1216 "\"%s\" is too long (must be < %d)\n",
1217 q, IFNAMSIZ);
1218 }
1219 if (*p == '\0')
1220 break;
1221 q = p + 1;
1222 }
1223 }
1224set:
1225 lomac_set_single(dest, grade, 0);
1226 lomac_set_range(dest, grade, 0, grade, 0);
1227}
1228

Callers

nothing calls this directly

Calls 6

strvalidFunction · 0.85
bzeroFunction · 0.85
strcmpFunction · 0.85
lomac_set_singleFunction · 0.85
lomac_set_rangeFunction · 0.85
printfFunction · 0.50

Tested by

no test coverage detected