mac_test.c (173112) | mac_test.c (173138) |
---|---|
1/*- 2 * Copyright (c) 1999-2002, 2007 Robert N. M. Watson 3 * Copyright (c) 2001-2005 McAfee, Inc. 4 * Copyright (c) 2006 SPARTA, Inc. 5 * All rights reserved. 6 * 7 * This software was developed by Robert Watson for the TrustedBSD Project. 8 * --- 21 unchanged lines hidden (view full) --- 30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * | 1/*- 2 * Copyright (c) 1999-2002, 2007 Robert N. M. Watson 3 * Copyright (c) 2001-2005 McAfee, Inc. 4 * Copyright (c) 2006 SPARTA, Inc. 5 * All rights reserved. 6 * 7 * This software was developed by Robert Watson for the TrustedBSD Project. 8 * --- 21 unchanged lines hidden (view full) --- 30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * |
38 * $FreeBSD: head/sys/security/mac_test/mac_test.c 173112 2007-10-28 18:33:31Z rwatson $ | 38 * $FreeBSD: head/sys/security/mac_test/mac_test.c 173138 2007-10-29 13:33:06Z rwatson $ |
39 */ 40 41/* 42 * Developed by the TrustedBSD Project. 43 * 44 * MAC Test policy - tests MAC Framework labeling by assigning object class 45 * magic numbers to each label and validates that each time an object label 46 * is passed into the policy, it has a consistent object type, catching --- 97 unchanged lines hidden (view full) --- 144} while (0) 145 146#define LABEL_NOTFREE(label) do { \ 147 KASSERT(SLOT(label) != MAGIC_FREE, \ 148 ("%s: destroyed label", __func__)); \ 149} while (0) 150 151/* | 39 */ 40 41/* 42 * Developed by the TrustedBSD Project. 43 * 44 * MAC Test policy - tests MAC Framework labeling by assigning object class 45 * magic numbers to each label and validates that each time an object label 46 * is passed into the policy, it has a consistent object type, catching --- 97 unchanged lines hidden (view full) --- 144} while (0) 145 146#define LABEL_NOTFREE(label) do { \ 147 KASSERT(SLOT(label) != MAGIC_FREE, \ 148 ("%s: destroyed label", __func__)); \ 149} while (0) 150 151/* |
152 * Label operations. | 152 * Functions that span multiple entry points. |
153 */ | 153 */ |
154COUNTER_DECL(bpfdesc_init_label); 155static void 156test_bpfdesc_init_label(struct label *label) | 154COUNTER_DECL(internalize_label); 155static int 156test_internalize_label(struct label *label, char *element_name, 157 char *element_data, int *claimed) |
157{ 158 | 158{ 159 |
159 LABEL_INIT(label, MAGIC_BPF); 160 COUNTER_INC(bpfdesc_init_label); 161} | 160 LABEL_NOTFREE(label); 161 COUNTER_INC(internalize_label); |
162 | 162 |
163COUNTER_DECL(cred_init_label); 164static void 165test_cred_init_label(struct label *label) 166{ 167 168 LABEL_INIT(label, MAGIC_CRED); 169 COUNTER_INC(cred_init_label); | 163 return (0); |
170} 171 | 164} 165 |
172COUNTER_DECL(devfs_init_label); 173static void 174test_devfs_init_label(struct label *label) 175{ 176 177 LABEL_INIT(label, MAGIC_DEVFS); 178 COUNTER_INC(devfs_init_label); 179} 180 181COUNTER_DECL(ifnet_init_label); 182static void 183test_ifnet_init_label(struct label *label) 184{ 185 186 LABEL_INIT(label, MAGIC_IFNET); 187 COUNTER_INC(ifnet_init_label); 188} 189 190COUNTER_DECL(inpcb_init_label); | 166/* 167 * Object-specific entry point implementations are sorted alphabetically by 168 * object type name and then by operation. 169 */ 170COUNTER_DECL(bpfdesc_check_receive); |
191static int | 171static int |
192test_inpcb_init_label(struct label *label, int flag) | 172test_bpfdesc_check_receive(struct bpf_d *bpf_d, struct label *bpflabel, 173 struct ifnet *ifp, struct label *ifplabel) |
193{ 194 | 174{ 175 |
195 if (flag & M_WAITOK) 196 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 197 "test_inpcb_init_label() at %s:%d", __FILE__, 198 __LINE__); | 176 LABEL_CHECK(bpflabel, MAGIC_BPF); 177 LABEL_CHECK(ifplabel, MAGIC_IFNET); 178 COUNTER_INC(bpfdesc_check_receive); |
199 | 179 |
200 LABEL_INIT(label, MAGIC_INPCB); 201 COUNTER_INC(inpcb_init_label); | |
202 return (0); 203} 204 | 180 return (0); 181} 182 |
205COUNTER_DECL(sysvmsg_init_label); | 183COUNTER_DECL(bpfdesc_create); |
206static void | 184static void |
207test_sysvmsg_init_label(struct label *label) | 185test_bpfdesc_create(struct ucred *cred, struct bpf_d *bpf_d, 186 struct label *bpflabel) |
208{ | 187{ |
209 LABEL_INIT(label, MAGIC_SYSV_MSG); 210 COUNTER_INC(sysvmsg_init_label); 211} | |
212 | 188 |
213COUNTER_DECL(sysvmsq_init_label); 214static void 215test_sysvmsq_init_label(struct label *label) 216{ 217 LABEL_INIT(label, MAGIC_SYSV_MSQ); 218 COUNTER_INC(sysvmsq_init_label); | 189 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 190 LABEL_CHECK(bpflabel, MAGIC_BPF); 191 COUNTER_INC(bpfdesc_create); |
219} 220 | 192} 193 |
221COUNTER_DECL(sysvsem_init_label); | 194COUNTER_DECL(bpfdesc_create_mbuf); |
222static void | 195static void |
223test_sysvsem_init_label(struct label *label) | 196test_bpfdesc_create_mbuf(struct bpf_d *bpf_d, struct label *bpflabel, 197 struct mbuf *mbuf, struct label *mbuflabel) |
224{ | 198{ |
225 LABEL_INIT(label, MAGIC_SYSV_SEM); 226 COUNTER_INC(sysvsem_init_label); | 199 200 LABEL_CHECK(bpflabel, MAGIC_BPF); 201 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 202 COUNTER_INC(bpfdesc_create_mbuf); |
227} 228 | 203} 204 |
229COUNTER_DECL(sysvshm_init_label); | 205COUNTER_DECL(bpfdesc_destroy_label); |
230static void | 206static void |
231test_sysvshm_init_label(struct label *label) | 207test_bpfdesc_destroy_label(struct label *label) |
232{ | 208{ |
233 LABEL_INIT(label, MAGIC_SYSV_SHM); 234 COUNTER_INC(sysvshm_init_label); 235} | |
236 | 209 |
237COUNTER_DECL(ipq_init_label); 238static int 239test_ipq_init_label(struct label *label, int flag) 240{ 241 242 if (flag & M_WAITOK) 243 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 244 "test_ipq_init_label() at %s:%d", __FILE__, 245 __LINE__); 246 247 LABEL_INIT(label, MAGIC_IPQ); 248 COUNTER_INC(ipq_init_label); 249 return (0); | 210 LABEL_DESTROY(label, MAGIC_BPF); 211 COUNTER_INC(bpfdesc_destroy_label); |
250} 251 | 212} 213 |
252COUNTER_DECL(mbuf_init_label); 253static int 254test_mbuf_init_label(struct label *label, int flag) 255{ 256 257 if (flag & M_WAITOK) 258 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 259 "test_mbuf_init_label() at %s:%d", __FILE__, 260 __LINE__); 261 262 LABEL_INIT(label, MAGIC_MBUF); 263 COUNTER_INC(mbuf_init_label); 264 return (0); 265} 266 267COUNTER_DECL(mount_init_label); | 214COUNTER_DECL(bpfdesc_init_label); |
268static void | 215static void |
269test_mount_init_label(struct label *label) | 216test_bpfdesc_init_label(struct label *label) |
270{ 271 | 217{ 218 |
272 LABEL_INIT(label, MAGIC_MOUNT); 273 COUNTER_INC(mount_init_label); | 219 LABEL_INIT(label, MAGIC_BPF); 220 COUNTER_INC(bpfdesc_init_label); |
274} 275 | 221} 222 |
276COUNTER_DECL(socket_init_label); | 223COUNTER_DECL(cred_check_relabel); |
277static int | 224static int |
278test_socket_init_label(struct label *label, int flag) | 225test_cred_check_relabel(struct ucred *cred, struct label *newlabel) |
279{ 280 | 226{ 227 |
281 if (flag & M_WAITOK) 282 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 283 "test_socket_init_label() at %s:%d", __FILE__, 284 __LINE__); | 228 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 229 LABEL_CHECK(newlabel, MAGIC_CRED); 230 COUNTER_INC(cred_check_relabel); |
285 | 231 |
286 LABEL_INIT(label, MAGIC_SOCKET); 287 COUNTER_INC(socket_init_label); | |
288 return (0); 289} 290 | 232 return (0); 233} 234 |
291COUNTER_DECL(socketpeer_init_label); | 235COUNTER_DECL(cred_check_visible); |
292static int | 236static int |
293test_socketpeer_init_label(struct label *label, int flag) | 237test_cred_check_visible(struct ucred *u1, struct ucred *u2) |
294{ 295 | 238{ 239 |
296 if (flag & M_WAITOK) 297 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 298 "test_socketpeer_init_label() at %s:%d", __FILE__, 299 __LINE__); | 240 LABEL_CHECK(u1->cr_label, MAGIC_CRED); 241 LABEL_CHECK(u2->cr_label, MAGIC_CRED); 242 COUNTER_INC(cred_check_visible); |
300 | 243 |
301 LABEL_INIT(label, MAGIC_SOCKET); 302 COUNTER_INC(socketpeer_init_label); | |
303 return (0); 304} 305 | 244 return (0); 245} 246 |
306COUNTER_DECL(pipe_init_label); | 247COUNTER_DECL(cred_copy_label); |
307static void | 248static void |
308test_pipe_init_label(struct label *label) | 249test_cred_copy_label(struct label *src, struct label *dest) |
309{ 310 | 250{ 251 |
311 LABEL_INIT(label, MAGIC_PIPE); 312 COUNTER_INC(pipe_init_label); | 252 LABEL_CHECK(src, MAGIC_CRED); 253 LABEL_CHECK(dest, MAGIC_CRED); 254 COUNTER_INC(cred_copy_label); |
313} 314 | 255} 256 |
315COUNTER_DECL(posixsem_init_label); 316static void 317test_posixsem_init_label(struct label *label) 318{ 319 320 LABEL_INIT(label, MAGIC_POSIX_SEM); 321 COUNTER_INC(posixsem_init_label); 322} 323 324COUNTER_DECL(proc_init_label); 325static void 326test_proc_init_label(struct label *label) 327{ 328 329 LABEL_INIT(label, MAGIC_PROC); 330 COUNTER_INC(proc_init_label); 331} 332 333COUNTER_DECL(syncache_init_label); 334static int 335test_syncache_init_label(struct label *label, int flag) 336{ 337 338 if (flag & M_WAITOK) 339 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 340 "test_syncache_init_label() at %s:%d", __FILE__, 341 __LINE__); 342 LABEL_INIT(label, MAGIC_SYNCACHE); 343 COUNTER_INC(syncache_init_label); 344 return (0); 345} 346 347COUNTER_DECL(vnode_init_label); 348static void 349test_vnode_init_label(struct label *label) 350{ 351 352 LABEL_INIT(label, MAGIC_VNODE); 353 COUNTER_INC(vnode_init_label); 354} 355 356COUNTER_DECL(bpfdesc_destroy_label); 357static void 358test_bpfdesc_destroy_label(struct label *label) 359{ 360 361 LABEL_DESTROY(label, MAGIC_BPF); 362 COUNTER_INC(bpfdesc_destroy_label); 363} 364 | |
365COUNTER_DECL(cred_destroy_label); 366static void 367test_cred_destroy_label(struct label *label) 368{ 369 370 LABEL_DESTROY(label, MAGIC_CRED); 371 COUNTER_INC(cred_destroy_label); 372} 373 | 257COUNTER_DECL(cred_destroy_label); 258static void 259test_cred_destroy_label(struct label *label) 260{ 261 262 LABEL_DESTROY(label, MAGIC_CRED); 263 COUNTER_INC(cred_destroy_label); 264} 265 |
374COUNTER_DECL(devfs_destroy_label); 375static void 376test_devfs_destroy_label(struct label *label) | 266COUNTER_DECL(cred_externalize_label); 267static int 268test_cred_externalize_label(struct label *label, char *element_name, 269 struct sbuf *sb, int *claimed) |
377{ 378 | 270{ 271 |
379 LABEL_DESTROY(label, MAGIC_DEVFS); 380 COUNTER_INC(devfs_destroy_label); 381} | 272 LABEL_CHECK(label, MAGIC_CRED); 273 COUNTER_INC(cred_externalize_label); |
382 | 274 |
383COUNTER_DECL(ifnet_destroy_label); 384static void 385test_ifnet_destroy_label(struct label *label) 386{ 387 388 LABEL_DESTROY(label, MAGIC_IFNET); 389 COUNTER_INC(ifnet_destroy_label); | 275 return (0); |
390} 391 | 276} 277 |
392COUNTER_DECL(inpcb_destroy_label); | 278COUNTER_DECL(cred_init_label); |
393static void | 279static void |
394test_inpcb_destroy_label(struct label *label) | 280test_cred_init_label(struct label *label) |
395{ 396 | 281{ 282 |
397 LABEL_DESTROY(label, MAGIC_INPCB); 398 COUNTER_INC(inpcb_destroy_label); | 283 LABEL_INIT(label, MAGIC_CRED); 284 COUNTER_INC(cred_init_label); |
399} 400 | 285} 286 |
401COUNTER_DECL(syncache_destroy_label); | 287COUNTER_DECL(cred_relabel); |
402static void | 288static void |
403test_syncache_destroy_label(struct label *label) | 289test_cred_relabel(struct ucred *cred, struct label *newlabel) |
404{ 405 | 290{ 291 |
406 LABEL_DESTROY(label, MAGIC_SYNCACHE); 407 COUNTER_INC(syncache_destroy_label); | 292 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 293 LABEL_CHECK(newlabel, MAGIC_CRED); 294 COUNTER_INC(cred_relabel); |
408} 409 | 295} 296 |
410COUNTER_DECL(sysvmsg_destroy_label); | 297COUNTER_DECL(devfs_create_device); |
411static void | 298static void |
412test_sysvmsg_destroy_label(struct label *label) | 299test_devfs_create_device(struct ucred *cred, struct mount *mp, 300 struct cdev *dev, struct devfs_dirent *de, struct label *delabel) |
413{ 414 | 301{ 302 |
415 LABEL_DESTROY(label, MAGIC_SYSV_MSG); 416 COUNTER_INC(sysvmsg_destroy_label); | 303 if (cred != NULL) 304 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 305 LABEL_CHECK(delabel, MAGIC_DEVFS); 306 COUNTER_INC(devfs_create_device); |
417} 418 | 307} 308 |
419COUNTER_DECL(sysvmsq_destroy_label); | 309COUNTER_DECL(devfs_create_directory); |
420static void | 310static void |
421test_sysvmsq_destroy_label(struct label *label) | 311test_devfs_create_directory(struct mount *mp, char *dirname, 312 int dirnamelen, struct devfs_dirent *de, struct label *delabel) |
422{ 423 | 313{ 314 |
424 LABEL_DESTROY(label, MAGIC_SYSV_MSQ); 425 COUNTER_INC(sysvmsq_destroy_label); | 315 LABEL_CHECK(delabel, MAGIC_DEVFS); 316 COUNTER_INC(devfs_create_directory); |
426} 427 | 317} 318 |
428COUNTER_DECL(sysvsem_destroy_label); | 319COUNTER_DECL(devfs_create_symlink); |
429static void | 320static void |
430test_sysvsem_destroy_label(struct label *label) | 321test_devfs_create_symlink(struct ucred *cred, struct mount *mp, 322 struct devfs_dirent *dd, struct label *ddlabel, struct devfs_dirent *de, 323 struct label *delabel) |
431{ 432 | 324{ 325 |
433 LABEL_DESTROY(label, MAGIC_SYSV_SEM); 434 COUNTER_INC(sysvsem_destroy_label); | 326 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 327 LABEL_CHECK(ddlabel, MAGIC_DEVFS); 328 LABEL_CHECK(delabel, MAGIC_DEVFS); 329 COUNTER_INC(devfs_create_symlink); |
435} 436 | 330} 331 |
437COUNTER_DECL(sysvshm_destroy_label); | 332COUNTER_DECL(devfs_destroy_label); |
438static void | 333static void |
439test_sysvshm_destroy_label(struct label *label) | 334test_devfs_destroy_label(struct label *label) |
440{ 441 | 335{ 336 |
442 LABEL_DESTROY(label, MAGIC_SYSV_SHM); 443 COUNTER_INC(sysvshm_destroy_label); | 337 LABEL_DESTROY(label, MAGIC_DEVFS); 338 COUNTER_INC(devfs_destroy_label); |
444} 445 | 339} 340 |
446COUNTER_DECL(ipq_destroy_label); | 341COUNTER_DECL(devfs_init_label); |
447static void | 342static void |
448test_ipq_destroy_label(struct label *label) | 343test_devfs_init_label(struct label *label) |
449{ 450 | 344{ 345 |
451 LABEL_DESTROY(label, MAGIC_IPQ); 452 COUNTER_INC(ipq_destroy_label); | 346 LABEL_INIT(label, MAGIC_DEVFS); 347 COUNTER_INC(devfs_init_label); |
453} 454 | 348} 349 |
455COUNTER_DECL(mbuf_destroy_label); | 350COUNTER_DECL(devfs_update); |
456static void | 351static void |
457test_mbuf_destroy_label(struct label *label) | 352test_devfs_update(struct mount *mp, struct devfs_dirent *devfs_dirent, 353 struct label *direntlabel, struct vnode *vp, struct label *vplabel) |
458{ 459 | 354{ 355 |
460 /* 461 * If we're loaded dynamically, there may be mbufs in flight that 462 * didn't have label storage allocated for them. Handle this 463 * gracefully. 464 */ 465 if (label == NULL) 466 return; 467 468 LABEL_DESTROY(label, MAGIC_MBUF); 469 COUNTER_INC(mbuf_destroy_label); | 356 LABEL_CHECK(direntlabel, MAGIC_DEVFS); 357 LABEL_CHECK(vplabel, MAGIC_VNODE); 358 COUNTER_INC(devfs_update); |
470} 471 | 359} 360 |
472COUNTER_DECL(mount_destroy_label); | 361COUNTER_DECL(devfs_vnode_associate); |
473static void | 362static void |
474test_mount_destroy_label(struct label *label) | 363test_devfs_vnode_associate(struct mount *mp, struct label *mplabel, 364 struct devfs_dirent *de, struct label *delabel, struct vnode *vp, 365 struct label *vplabel) |
475{ 476 | 366{ 367 |
477 LABEL_DESTROY(label, MAGIC_MOUNT); 478 COUNTER_INC(mount_destroy_label); | 368 LABEL_CHECK(mplabel, MAGIC_MOUNT); 369 LABEL_CHECK(delabel, MAGIC_DEVFS); 370 LABEL_CHECK(vplabel, MAGIC_VNODE); 371 COUNTER_INC(devfs_vnode_associate); |
479} 480 | 372} 373 |
481COUNTER_DECL(socket_destroy_label); 482static void 483test_socket_destroy_label(struct label *label) | 374COUNTER_DECL(ifnet_check_relabel); 375static int 376test_ifnet_check_relabel(struct ucred *cred, struct ifnet *ifp, 377 struct label *ifplabel, struct label *newlabel) |
484{ 485 | 378{ 379 |
486 LABEL_DESTROY(label, MAGIC_SOCKET); 487 COUNTER_INC(socket_destroy_label); 488} | 380 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 381 LABEL_CHECK(ifplabel, MAGIC_IFNET); 382 LABEL_CHECK(newlabel, MAGIC_IFNET); 383 COUNTER_INC(ifnet_check_relabel); |
489 | 384 |
490COUNTER_DECL(socketpeer_destroy_label); 491static void 492test_socketpeer_destroy_label(struct label *label) 493{ 494 495 LABEL_DESTROY(label, MAGIC_SOCKET); 496 COUNTER_INC(socketpeer_destroy_label); | 385 return (0); |
497} 498 | 386} 387 |
499COUNTER_DECL(pipe_destroy_label); 500static void 501test_pipe_destroy_label(struct label *label) | 388COUNTER_DECL(ifnet_check_transmit); 389static int 390test_ifnet_check_transmit(struct ifnet *ifp, struct label *ifplabel, 391 struct mbuf *m, struct label *mbuflabel) |
502{ 503 | 392{ 393 |
504 LABEL_DESTROY(label, MAGIC_PIPE); 505 COUNTER_INC(pipe_destroy_label); 506} | 394 LABEL_CHECK(ifplabel, MAGIC_IFNET); 395 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 396 COUNTER_INC(ifnet_check_transmit); |
507 | 397 |
508COUNTER_DECL(posixsem_destroy_label); 509static void 510test_posixsem_destroy_label(struct label *label) 511{ 512 513 LABEL_DESTROY(label, MAGIC_POSIX_SEM); 514 COUNTER_INC(posixsem_destroy_label); | 398 return (0); |
515} 516 | 399} 400 |
517COUNTER_DECL(proc_destroy_label); 518static void 519test_proc_destroy_label(struct label *label) 520{ 521 522 LABEL_DESTROY(label, MAGIC_PROC); 523 COUNTER_INC(proc_destroy_label); 524} 525 526COUNTER_DECL(vnode_destroy_label); 527static void 528test_vnode_destroy_label(struct label *label) 529{ 530 531 LABEL_DESTROY(label, MAGIC_VNODE); 532 COUNTER_INC(vnode_destroy_label); 533} 534 535COUNTER_DECL(cred_copy_label); 536static void 537test_cred_copy_label(struct label *src, struct label *dest) 538{ 539 540 LABEL_CHECK(src, MAGIC_CRED); 541 LABEL_CHECK(dest, MAGIC_CRED); 542 COUNTER_INC(cred_copy_label); 543} 544 | |
545COUNTER_DECL(ifnet_copy_label); 546static void 547test_ifnet_copy_label(struct label *src, struct label *dest) 548{ 549 550 LABEL_CHECK(src, MAGIC_IFNET); 551 LABEL_CHECK(dest, MAGIC_IFNET); 552 COUNTER_INC(ifnet_copy_label); 553} 554 | 401COUNTER_DECL(ifnet_copy_label); 402static void 403test_ifnet_copy_label(struct label *src, struct label *dest) 404{ 405 406 LABEL_CHECK(src, MAGIC_IFNET); 407 LABEL_CHECK(dest, MAGIC_IFNET); 408 COUNTER_INC(ifnet_copy_label); 409} 410 |
555COUNTER_DECL(mbuf_copy_label); | 411COUNTER_DECL(ifnet_create); |
556static void | 412static void |
557test_mbuf_copy_label(struct label *src, struct label *dest) | 413test_ifnet_create(struct ifnet *ifp, struct label *ifplabel) |
558{ 559 | 414{ 415 |
560 LABEL_CHECK(src, MAGIC_MBUF); 561 LABEL_CHECK(dest, MAGIC_MBUF); 562 COUNTER_INC(mbuf_copy_label); | 416 LABEL_CHECK(ifplabel, MAGIC_IFNET); 417 COUNTER_INC(ifnet_create); |
563} 564 | 418} 419 |
565COUNTER_DECL(pipe_copy_label); | 420COUNTER_DECL(ifnet_create_mbuf); |
566static void | 421static void |
567test_pipe_copy_label(struct label *src, struct label *dest) | 422test_ifnet_create_mbuf(struct ifnet *ifp, struct label *ifplabel, 423 struct mbuf *m, struct label *mbuflabel) |
568{ 569 | 424{ 425 |
570 LABEL_CHECK(src, MAGIC_PIPE); 571 LABEL_CHECK(dest, MAGIC_PIPE); 572 COUNTER_INC(pipe_copy_label); | 426 LABEL_CHECK(ifplabel, MAGIC_IFNET); 427 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 428 COUNTER_INC(ifnet_create_mbuf); |
573} 574 | 429} 430 |
575COUNTER_DECL(socket_copy_label); | 431COUNTER_DECL(ifnet_destroy_label); |
576static void | 432static void |
577test_socket_copy_label(struct label *src, struct label *dest) | 433test_ifnet_destroy_label(struct label *label) |
578{ 579 | 434{ 435 |
580 LABEL_CHECK(src, MAGIC_SOCKET); 581 LABEL_CHECK(dest, MAGIC_SOCKET); 582 COUNTER_INC(socket_copy_label); | 436 LABEL_DESTROY(label, MAGIC_IFNET); 437 COUNTER_INC(ifnet_destroy_label); |
583} 584 | 438} 439 |
585COUNTER_DECL(vnode_copy_label); 586static void 587test_vnode_copy_label(struct label *src, struct label *dest) 588{ 589 590 LABEL_CHECK(src, MAGIC_VNODE); 591 LABEL_CHECK(dest, MAGIC_VNODE); 592 COUNTER_INC(vnode_copy_label); 593} 594 595COUNTER_DECL(cred_externalize_label); 596static int 597test_cred_externalize_label(struct label *label, char *element_name, 598 struct sbuf *sb, int *claimed) 599{ 600 601 LABEL_CHECK(label, MAGIC_CRED); 602 COUNTER_INC(cred_externalize_label); 603 604 return (0); 605} 606 | |
607COUNTER_DECL(ifnet_externalize_label); 608static int 609test_ifnet_externalize_label(struct label *label, char *element_name, 610 struct sbuf *sb, int *claimed) 611{ 612 613 LABEL_CHECK(label, MAGIC_IFNET); 614 COUNTER_INC(ifnet_externalize_label); 615 616 return (0); 617} 618 | 440COUNTER_DECL(ifnet_externalize_label); 441static int 442test_ifnet_externalize_label(struct label *label, char *element_name, 443 struct sbuf *sb, int *claimed) 444{ 445 446 LABEL_CHECK(label, MAGIC_IFNET); 447 COUNTER_INC(ifnet_externalize_label); 448 449 return (0); 450} 451 |
619COUNTER_DECL(pipe_externalize_label); 620static int 621test_pipe_externalize_label(struct label *label, char *element_name, 622 struct sbuf *sb, int *claimed) | 452COUNTER_DECL(ifnet_init_label); 453static void 454test_ifnet_init_label(struct label *label) |
623{ 624 | 455{ 456 |
625 LABEL_CHECK(label, MAGIC_PIPE); 626 COUNTER_INC(pipe_externalize_label); 627 628 return (0); | 457 LABEL_INIT(label, MAGIC_IFNET); 458 COUNTER_INC(ifnet_init_label); |
629} 630 | 459} 460 |
631COUNTER_DECL(socket_externalize_label); 632static int 633test_socket_externalize_label(struct label *label, char *element_name, 634 struct sbuf *sb, int *claimed) | 461COUNTER_DECL(ifnet_relabel); 462static void 463test_ifnet_relabel(struct ucred *cred, struct ifnet *ifp, 464 struct label *ifplabel, struct label *newlabel) |
635{ 636 | 465{ 466 |
637 LABEL_CHECK(label, MAGIC_SOCKET); 638 COUNTER_INC(socket_externalize_label); 639 640 return (0); | 467 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 468 LABEL_CHECK(ifplabel, MAGIC_IFNET); 469 LABEL_CHECK(newlabel, MAGIC_IFNET); 470 COUNTER_INC(ifnet_relabel); |
641} 642 | 471} 472 |
643COUNTER_DECL(socketpeer_externalize_label); | 473COUNTER_DECL(inpcb_check_deliver); |
644static int | 474static int |
645test_socketpeer_externalize_label(struct label *label, char *element_name, 646 struct sbuf *sb, int *claimed) | 475test_inpcb_check_deliver(struct inpcb *inp, struct label *inplabel, 476 struct mbuf *m, struct label *mlabel) |
647{ 648 | 477{ 478 |
649 LABEL_CHECK(label, MAGIC_SOCKET); 650 COUNTER_INC(socketpeer_externalize_label); | 479 LABEL_CHECK(inplabel, MAGIC_INPCB); 480 LABEL_CHECK(mlabel, MAGIC_MBUF); 481 COUNTER_INC(inpcb_check_deliver); |
651 652 return (0); 653} 654 | 482 483 return (0); 484} 485 |
655COUNTER_DECL(vnode_externalize_label); 656static int 657test_vnode_externalize_label(struct label *label, char *element_name, 658 struct sbuf *sb, int *claimed) | 486COUNTER_DECL(inpcb_create); 487static void 488test_inpcb_create(struct socket *so, struct label *solabel, 489 struct inpcb *inp, struct label *inplabel) |
659{ 660 | 490{ 491 |
661 LABEL_CHECK(label, MAGIC_VNODE); 662 COUNTER_INC(vnode_externalize_label); 663 664 return (0); | 492 LABEL_CHECK(solabel, MAGIC_SOCKET); 493 LABEL_CHECK(inplabel, MAGIC_INPCB); 494 COUNTER_INC(inpcb_create); |
665} 666 | 495} 496 |
667COUNTER_DECL(internalize_label); 668static int 669test_internalize_label(struct label *label, char *element_name, 670 char *element_data, int *claimed) | 497COUNTER_DECL(inpcb_create_mbuf); 498static void 499test_inpcb_create_mbuf(struct inpcb *inp, struct label *inplabel, 500 struct mbuf *m, struct label *mlabel) |
671{ 672 | 501{ 502 |
673 LABEL_NOTFREE(label); 674 COUNTER_INC(internalize_label); 675 676 return (0); | 503 LABEL_CHECK(inplabel, MAGIC_INPCB); 504 LABEL_CHECK(mlabel, MAGIC_MBUF); 505 COUNTER_INC(inpcb_create_mbuf); |
677} 678 | 506} 507 |
679/* 680 * Labeling event operations: file system objects, and things that look 681 * a lot like file system objects. 682 */ 683COUNTER_DECL(devfs_vnode_associate); | 508COUNTER_DECL(inpcb_destroy_label); |
684static void | 509static void |
685test_devfs_vnode_associate(struct mount *mp, struct label *mplabel, 686 struct devfs_dirent *de, struct label *delabel, struct vnode *vp, 687 struct label *vplabel) | 510test_inpcb_destroy_label(struct label *label) |
688{ 689 | 511{ 512 |
690 LABEL_CHECK(mplabel, MAGIC_MOUNT); 691 LABEL_CHECK(delabel, MAGIC_DEVFS); 692 LABEL_CHECK(vplabel, MAGIC_VNODE); 693 COUNTER_INC(devfs_vnode_associate); | 513 LABEL_DESTROY(label, MAGIC_INPCB); 514 COUNTER_INC(inpcb_destroy_label); |
694} 695 | 515} 516 |
696COUNTER_DECL(vnode_associate_extattr); | 517COUNTER_DECL(inpcb_init_label); |
697static int | 518static int |
698test_vnode_associate_extattr(struct mount *mp, struct label *mplabel, 699 struct vnode *vp, struct label *vplabel) | 519test_inpcb_init_label(struct label *label, int flag) |
700{ 701 | 520{ 521 |
702 LABEL_CHECK(mplabel, MAGIC_MOUNT); 703 LABEL_CHECK(vplabel, MAGIC_VNODE); 704 COUNTER_INC(vnode_associate_extattr); | 522 if (flag & M_WAITOK) 523 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 524 "test_inpcb_init_label() at %s:%d", __FILE__, 525 __LINE__); |
705 | 526 |
527 LABEL_INIT(label, MAGIC_INPCB); 528 COUNTER_INC(inpcb_init_label); |
|
706 return (0); 707} 708 | 529 return (0); 530} 531 |
709COUNTER_DECL(vnode_associate_singlelabel); | 532COUNTER_DECL(inpcb_sosetlabel); |
710static void | 533static void |
711test_vnode_associate_singlelabel(struct mount *mp, struct label *mplabel, 712 struct vnode *vp, struct label *vplabel) | 534test_inpcb_sosetlabel(struct socket *so, struct label *solabel, 535 struct inpcb *inp, struct label *inplabel) |
713{ 714 | 536{ 537 |
715 LABEL_CHECK(mplabel, MAGIC_MOUNT); 716 LABEL_CHECK(vplabel, MAGIC_VNODE); 717 COUNTER_INC(vnode_associate_singlelabel); | 538 LABEL_CHECK(solabel, MAGIC_SOCKET); 539 LABEL_CHECK(inplabel, MAGIC_INPCB); 540 COUNTER_INC(inpcb_sosetlabel); |
718} 719 | 541} 542 |
720COUNTER_DECL(devfs_create_device); | 543COUNTER_DECL(ipq_create); |
721static void | 544static void |
722test_devfs_create_device(struct ucred *cred, struct mount *mp, 723 struct cdev *dev, struct devfs_dirent *de, struct label *delabel) | 545test_ipq_create(struct mbuf *fragment, struct label *fragmentlabel, 546 struct ipq *ipq, struct label *ipqlabel) |
724{ 725 | 547{ 548 |
726 if (cred != NULL) 727 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 728 LABEL_CHECK(delabel, MAGIC_DEVFS); 729 COUNTER_INC(devfs_create_device); | 549 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 550 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 551 COUNTER_INC(ipq_create); |
730} 731 | 552} 553 |
732COUNTER_DECL(devfs_create_directory); | 554COUNTER_DECL(ipq_destroy_label); |
733static void | 555static void |
734test_devfs_create_directory(struct mount *mp, char *dirname, 735 int dirnamelen, struct devfs_dirent *de, struct label *delabel) | 556test_ipq_destroy_label(struct label *label) |
736{ 737 | 557{ 558 |
738 LABEL_CHECK(delabel, MAGIC_DEVFS); 739 COUNTER_INC(devfs_create_directory); | 559 LABEL_DESTROY(label, MAGIC_IPQ); 560 COUNTER_INC(ipq_destroy_label); |
740} 741 | 561} 562 |
742COUNTER_DECL(devfs_create_symlink); 743static void 744test_devfs_create_symlink(struct ucred *cred, struct mount *mp, 745 struct devfs_dirent *dd, struct label *ddlabel, struct devfs_dirent *de, 746 struct label *delabel) | 563COUNTER_DECL(ipq_init_label); 564static int 565test_ipq_init_label(struct label *label, int flag) |
747{ 748 | 566{ 567 |
749 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 750 LABEL_CHECK(ddlabel, MAGIC_DEVFS); 751 LABEL_CHECK(delabel, MAGIC_DEVFS); 752 COUNTER_INC(devfs_create_symlink); | 568 if (flag & M_WAITOK) 569 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 570 "test_ipq_init_label() at %s:%d", __FILE__, 571 __LINE__); 572 573 LABEL_INIT(label, MAGIC_IPQ); 574 COUNTER_INC(ipq_init_label); 575 return (0); |
753} 754 | 576} 577 |
755COUNTER_DECL(vnode_create_extattr); | 578COUNTER_DECL(ipq_match); |
756static int | 579static int |
757test_vnode_create_extattr(struct ucred *cred, struct mount *mp, 758 struct label *mplabel, struct vnode *dvp, struct label *dvplabel, 759 struct vnode *vp, struct label *vplabel, struct componentname *cnp) | 580test_ipq_match(struct mbuf *fragment, struct label *fragmentlabel, 581 struct ipq *ipq, struct label *ipqlabel) |
760{ 761 | 582{ 583 |
762 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 763 LABEL_CHECK(mplabel, MAGIC_MOUNT); 764 LABEL_CHECK(dvplabel, MAGIC_VNODE); 765 COUNTER_INC(vnode_create_extattr); | 584 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 585 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 586 COUNTER_INC(ipq_match); |
766 | 587 |
767 return (0); | 588 return (1); |
768} 769 | 589} 590 |
770COUNTER_DECL(mount_create); | 591COUNTER_DECL(ipq_reassemble); |
771static void | 592static void |
772test_mount_create(struct ucred *cred, struct mount *mp, 773 struct label *mplabel) | 593test_ipq_reassemble(struct ipq *ipq, struct label *ipqlabel, 594 struct mbuf *datagram, struct label *datagramlabel) |
774{ 775 | 595{ 596 |
776 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 777 LABEL_CHECK(mplabel, MAGIC_MOUNT); 778 COUNTER_INC(mount_create); | 597 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 598 LABEL_CHECK(datagramlabel, MAGIC_MBUF); 599 COUNTER_INC(ipq_reassemble); |
779} 780 | 600} 601 |
781COUNTER_DECL(vnode_relabel); | 602COUNTER_DECL(ipq_update); |
782static void | 603static void |
783test_vnode_relabel(struct ucred *cred, struct vnode *vp, 784 struct label *vplabel, struct label *label) | 604test_ipq_update(struct mbuf *fragment, struct label *fragmentlabel, 605 struct ipq *ipq, struct label *ipqlabel) |
785{ 786 | 606{ 607 |
787 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 788 LABEL_CHECK(vplabel, MAGIC_VNODE); 789 LABEL_CHECK(label, MAGIC_VNODE); 790 COUNTER_INC(vnode_relabel); | 608 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 609 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 610 COUNTER_INC(ipq_update); |
791} 792 | 611} 612 |
793COUNTER_DECL(vnode_setlabel_extattr); | 613COUNTER_DECL(kenv_check_dump); |
794static int | 614static int |
795test_vnode_setlabel_extattr(struct ucred *cred, struct vnode *vp, 796 struct label *vplabel, struct label *intlabel) | 615test_kenv_check_dump(struct ucred *cred) |
797{ 798 799 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 616{ 617 618 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
800 LABEL_CHECK(vplabel, MAGIC_VNODE); 801 LABEL_CHECK(intlabel, MAGIC_VNODE); 802 COUNTER_INC(vnode_setlabel_extattr); | 619 COUNTER_INC(kenv_check_dump); |
803 804 return (0); 805} 806 | 620 621 return (0); 622} 623 |
807COUNTER_DECL(devfs_update); 808static void 809test_devfs_update(struct mount *mp, struct devfs_dirent *devfs_dirent, 810 struct label *direntlabel, struct vnode *vp, struct label *vplabel) | 624COUNTER_DECL(kenv_check_get); 625static int 626test_kenv_check_get(struct ucred *cred, char *name) |
811{ 812 | 627{ 628 |
813 LABEL_CHECK(direntlabel, MAGIC_DEVFS); 814 LABEL_CHECK(vplabel, MAGIC_VNODE); 815 COUNTER_INC(devfs_update); 816} | 629 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 630 COUNTER_INC(kenv_check_get); |
817 | 631 |
818/* 819 * Labeling event operations: IPC object. 820 */ 821COUNTER_DECL(socket_create_mbuf); 822static void 823test_socket_create_mbuf(struct socket *so, struct label *socketlabel, 824 struct mbuf *m, struct label *mbuflabel) 825{ 826 827 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 828 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 829 COUNTER_INC(socket_create_mbuf); | 632 return (0); |
830} 831 | 633} 634 |
832COUNTER_DECL(socket_create); 833static void 834test_socket_create(struct ucred *cred, struct socket *socket, 835 struct label *socketlabel) | 635COUNTER_DECL(kenv_check_set); 636static int 637test_kenv_check_set(struct ucred *cred, char *name, char *value) |
836{ 837 838 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 638{ 639 640 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
839 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 840 COUNTER_INC(socket_create); 841} | 641 COUNTER_INC(kenv_check_set); |
842 | 642 |
843COUNTER_DECL(pipe_create); 844static void 845test_pipe_create(struct ucred *cred, struct pipepair *pp, 846 struct label *pipelabel) 847{ 848 849 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 850 LABEL_CHECK(pipelabel, MAGIC_PIPE); 851 COUNTER_INC(pipe_create); | 643 return (0); |
852} 853 | 644} 645 |
854COUNTER_DECL(posixsem_create); 855static void 856test_posixsem_create(struct ucred *cred, struct ksem *ks, 857 struct label *kslabel) | 646COUNTER_DECL(kenv_check_unset); 647static int 648test_kenv_check_unset(struct ucred *cred, char *name) |
858{ 859 860 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 649{ 650 651 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
861 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 862 COUNTER_INC(posixsem_create); 863} | 652 COUNTER_INC(kenv_check_unset); |
864 | 653 |
865COUNTER_DECL(socket_newconn); 866static void 867test_socket_newconn(struct socket *oldsocket, 868 struct label *oldsocketlabel, struct socket *newsocket, 869 struct label *newsocketlabel) 870{ 871 872 LABEL_CHECK(oldsocketlabel, MAGIC_SOCKET); 873 LABEL_CHECK(newsocketlabel, MAGIC_SOCKET); 874 COUNTER_INC(socket_newconn); | 654 return (0); |
875} 876 | 655} 656 |
877COUNTER_DECL(socket_relabel); 878static void 879test_socket_relabel(struct ucred *cred, struct socket *socket, 880 struct label *socketlabel, struct label *newlabel) | 657COUNTER_DECL(kld_check_load); 658static int 659test_kld_check_load(struct ucred *cred, struct vnode *vp, 660 struct label *label) |
881{ 882 883 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 661{ 662 663 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
884 LABEL_CHECK(newlabel, MAGIC_SOCKET); 885 COUNTER_INC(socket_relabel); 886} | 664 LABEL_CHECK(label, MAGIC_VNODE); 665 COUNTER_INC(kld_check_load); |
887 | 666 |
888COUNTER_DECL(pipe_relabel); 889static void 890test_pipe_relabel(struct ucred *cred, struct pipepair *pp, 891 struct label *pipelabel, struct label *newlabel) 892{ 893 894 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 895 LABEL_CHECK(pipelabel, MAGIC_PIPE); 896 LABEL_CHECK(newlabel, MAGIC_PIPE); 897 COUNTER_INC(pipe_relabel); | 667 return (0); |
898} 899 | 668} 669 |
900COUNTER_DECL(socketpeer_set_from_mbuf); 901static void 902test_socketpeer_set_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel, 903 struct socket *socket, struct label *socketpeerlabel) | 670COUNTER_DECL(kld_check_stat); 671static int 672test_kld_check_stat(struct ucred *cred) |
904{ 905 | 673{ 674 |
906 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 907 LABEL_CHECK(socketpeerlabel, MAGIC_SOCKET); 908 COUNTER_INC(socketpeer_set_from_mbuf); 909} 910 911/* 912 * Labeling event operations: network objects. 913 */ 914COUNTER_DECL(socketpeer_set_from_socket); 915static void 916test_socketpeer_set_from_socket(struct socket *oldsocket, 917 struct label *oldsocketlabel, struct socket *newsocket, 918 struct label *newsocketpeerlabel) 919{ 920 921 LABEL_CHECK(oldsocketlabel, MAGIC_SOCKET); 922 LABEL_CHECK(newsocketpeerlabel, MAGIC_SOCKET); 923 COUNTER_INC(socketpeer_set_from_socket); 924} 925 926COUNTER_DECL(bpfdesc_create); 927static void 928test_bpfdesc_create(struct ucred *cred, struct bpf_d *bpf_d, 929 struct label *bpflabel) 930{ 931 | |
932 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 675 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
933 LABEL_CHECK(bpflabel, MAGIC_BPF); 934 COUNTER_INC(bpfdesc_create); 935} | 676 COUNTER_INC(kld_check_stat); |
936 | 677 |
937COUNTER_DECL(ipq_reassemble); 938static void 939test_ipq_reassemble(struct ipq *ipq, struct label *ipqlabel, 940 struct mbuf *datagram, struct label *datagramlabel) 941{ 942 943 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 944 LABEL_CHECK(datagramlabel, MAGIC_MBUF); 945 COUNTER_INC(ipq_reassemble); | 678 return (0); |
946} 947 | 679} 680 |
948COUNTER_DECL(netinet_fragment); | 681COUNTER_DECL(mbuf_copy_label); |
949static void | 682static void |
950test_netinet_fragment(struct mbuf *datagram, struct label *datagramlabel, 951 struct mbuf *fragment, struct label *fragmentlabel) | 683test_mbuf_copy_label(struct label *src, struct label *dest) |
952{ 953 | 684{ 685 |
954 LABEL_CHECK(datagramlabel, MAGIC_MBUF); 955 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 956 COUNTER_INC(netinet_fragment); | 686 LABEL_CHECK(src, MAGIC_MBUF); 687 LABEL_CHECK(dest, MAGIC_MBUF); 688 COUNTER_INC(mbuf_copy_label); |
957} 958 | 689} 690 |
959COUNTER_DECL(ifnet_create); | 691COUNTER_DECL(mbuf_destroy_label); |
960static void | 692static void |
961test_ifnet_create(struct ifnet *ifp, struct label *ifplabel) | 693test_mbuf_destroy_label(struct label *label) |
962{ 963 | 694{ 695 |
964 LABEL_CHECK(ifplabel, MAGIC_IFNET); 965 COUNTER_INC(ifnet_create); 966} | 696 /* 697 * If we're loaded dynamically, there may be mbufs in flight that 698 * didn't have label storage allocated for them. Handle this 699 * gracefully. 700 */ 701 if (label == NULL) 702 return; |
967 | 703 |
968COUNTER_DECL(inpcb_create); 969static void 970test_inpcb_create(struct socket *so, struct label *solabel, 971 struct inpcb *inp, struct label *inplabel) 972{ 973 974 LABEL_CHECK(solabel, MAGIC_SOCKET); 975 LABEL_CHECK(inplabel, MAGIC_INPCB); 976 COUNTER_INC(inpcb_create); | 704 LABEL_DESTROY(label, MAGIC_MBUF); 705 COUNTER_INC(mbuf_destroy_label); |
977} 978 | 706} 707 |
979COUNTER_DECL(syncache_create); 980static void 981test_syncache_create(struct label *label, struct inpcb *inp) | 708COUNTER_DECL(mbuf_init_label); 709static int 710test_mbuf_init_label(struct label *label, int flag) |
982{ 983 | 711{ 712 |
984 LABEL_CHECK(label, MAGIC_SYNCACHE); 985 COUNTER_INC(syncache_create); 986} | 713 if (flag & M_WAITOK) 714 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 715 "test_mbuf_init_label() at %s:%d", __FILE__, 716 __LINE__); |
987 | 717 |
988COUNTER_DECL(syncache_create_mbuf); 989static void 990test_syncache_create_mbuf(struct label *sc_label, struct mbuf *m, 991 struct label *mlabel) 992{ 993 994 LABEL_CHECK(sc_label, MAGIC_SYNCACHE); 995 LABEL_CHECK(mlabel, MAGIC_MBUF); 996 COUNTER_INC(syncache_create_mbuf); | 718 LABEL_INIT(label, MAGIC_MBUF); 719 COUNTER_INC(mbuf_init_label); 720 return (0); |
997} 998 | 721} 722 |
999COUNTER_DECL(sysvmsg_create); 1000static void 1001test_sysvmsg_create(struct ucred *cred, struct msqid_kernel *msqkptr, 1002 struct label *msqlabel, struct msg *msgptr, struct label *msglabel) | 723COUNTER_DECL(mount_check_stat); 724static int 725test_mount_check_stat(struct ucred *cred, struct mount *mp, 726 struct label *mplabel) |
1003{ 1004 | 727{ 728 |
1005 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 1006 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 1007 COUNTER_INC(sysvmsg_create); 1008} | 729 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 730 LABEL_CHECK(mplabel, MAGIC_MOUNT); 731 COUNTER_INC(mount_check_stat); |
1009 | 732 |
1010COUNTER_DECL(sysvmsq_create); 1011static void 1012test_sysvmsq_create(struct ucred *cred, 1013 struct msqid_kernel *msqkptr, struct label *msqlabel) 1014{ 1015 1016 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 1017 COUNTER_INC(sysvmsq_create); | 733 return (0); |
1018} 1019 | 734} 735 |
1020COUNTER_DECL(sysvsem_create); | 736COUNTER_DECL(mount_create); |
1021static void | 737static void |
1022test_sysvsem_create(struct ucred *cred, struct semid_kernel *semakptr, 1023 struct label *semalabel) | 738test_mount_create(struct ucred *cred, struct mount *mp, 739 struct label *mplabel) |
1024{ 1025 | 740{ 741 |
1026 LABEL_CHECK(semalabel, MAGIC_SYSV_SEM); 1027 COUNTER_INC(sysvsem_create); | 742 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 743 LABEL_CHECK(mplabel, MAGIC_MOUNT); 744 COUNTER_INC(mount_create); |
1028} 1029 | 745} 746 |
1030COUNTER_DECL(sysvshm_create); | 747COUNTER_DECL(mount_destroy_label); |
1031static void | 748static void |
1032test_sysvshm_create(struct ucred *cred, struct shmid_kernel *shmsegptr, 1033 struct label *shmlabel) | 749test_mount_destroy_label(struct label *label) |
1034{ 1035 | 750{ 751 |
1036 LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM); 1037 COUNTER_INC(sysvshm_create); | 752 LABEL_DESTROY(label, MAGIC_MOUNT); 753 COUNTER_INC(mount_destroy_label); |
1038} 1039 | 754} 755 |
1040COUNTER_DECL(ipq_create); | 756COUNTER_DECL(mount_init_label); |
1041static void | 757static void |
1042test_ipq_create(struct mbuf *fragment, struct label *fragmentlabel, 1043 struct ipq *ipq, struct label *ipqlabel) | 758test_mount_init_label(struct label *label) |
1044{ 1045 | 759{ 760 |
1046 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 1047 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 1048 COUNTER_INC(ipq_create); | 761 LABEL_INIT(label, MAGIC_MOUNT); 762 COUNTER_INC(mount_init_label); |
1049} 1050 | 763} 764 |
1051COUNTER_DECL(inpcb_create_mbuf); 1052static void 1053test_inpcb_create_mbuf(struct inpcb *inp, struct label *inplabel, 1054 struct mbuf *m, struct label *mlabel) 1055{ 1056 1057 LABEL_CHECK(inplabel, MAGIC_INPCB); 1058 LABEL_CHECK(mlabel, MAGIC_MBUF); 1059 COUNTER_INC(inpcb_create_mbuf); 1060} 1061 1062COUNTER_DECL(bpfdesc_create_mbuf); 1063static void 1064test_bpfdesc_create_mbuf(struct bpf_d *bpf_d, struct label *bpflabel, 1065 struct mbuf *mbuf, struct label *mbuflabel) 1066{ 1067 1068 LABEL_CHECK(bpflabel, MAGIC_BPF); 1069 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1070 COUNTER_INC(bpfdesc_create_mbuf); 1071} 1072 1073COUNTER_DECL(ifnet_create_mbuf); 1074static void 1075test_ifnet_create_mbuf(struct ifnet *ifp, struct label *ifplabel, 1076 struct mbuf *m, struct label *mbuflabel) 1077{ 1078 1079 LABEL_CHECK(ifplabel, MAGIC_IFNET); 1080 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1081 COUNTER_INC(ifnet_create_mbuf); 1082} 1083 1084COUNTER_DECL(ipq_match); 1085static int 1086test_ipq_match(struct mbuf *fragment, struct label *fragmentlabel, 1087 struct ipq *ipq, struct label *ipqlabel) 1088{ 1089 1090 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 1091 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 1092 COUNTER_INC(ipq_match); 1093 1094 return (1); 1095} 1096 | |
1097COUNTER_DECL(netatalk_aarp_send); 1098static void 1099test_netatalk_aarp_send(struct ifnet *ifp, struct label *ifplabel, 1100 struct mbuf *mbuf, struct label *mbuflabel) 1101{ 1102 1103 LABEL_CHECK(ifplabel, MAGIC_IFNET); 1104 LABEL_CHECK(mbuflabel, MAGIC_MBUF); --- 6 unchanged lines hidden (view full) --- 1111 struct mbuf *mbuf, struct label *mbuflabel) 1112{ 1113 1114 LABEL_CHECK(ifplabel, MAGIC_IFNET); 1115 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1116 COUNTER_INC(netinet_arp_send); 1117} 1118 | 765COUNTER_DECL(netatalk_aarp_send); 766static void 767test_netatalk_aarp_send(struct ifnet *ifp, struct label *ifplabel, 768 struct mbuf *mbuf, struct label *mbuflabel) 769{ 770 771 LABEL_CHECK(ifplabel, MAGIC_IFNET); 772 LABEL_CHECK(mbuflabel, MAGIC_MBUF); --- 6 unchanged lines hidden (view full) --- 779 struct mbuf *mbuf, struct label *mbuflabel) 780{ 781 782 LABEL_CHECK(ifplabel, MAGIC_IFNET); 783 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 784 COUNTER_INC(netinet_arp_send); 785} 786 |
787COUNTER_DECL(netinet_fragment); 788static void 789test_netinet_fragment(struct mbuf *datagram, struct label *datagramlabel, 790 struct mbuf *fragment, struct label *fragmentlabel) 791{ 792 793 LABEL_CHECK(datagramlabel, MAGIC_MBUF); 794 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 795 COUNTER_INC(netinet_fragment); 796} 797 |
|
1119COUNTER_DECL(netinet_icmp_reply); 1120static void 1121test_netinet_icmp_reply(struct mbuf *mrecv, struct label *mrecvlabel, 1122 struct mbuf *msend, struct label *msendlabel) 1123{ 1124 1125 LABEL_CHECK(mrecvlabel, MAGIC_MBUF); 1126 LABEL_CHECK(msendlabel, MAGIC_MBUF); --- 35 unchanged lines hidden (view full) --- 1162 struct mbuf *mbuf, struct label *mbuflabel) 1163{ 1164 1165 LABEL_CHECK(ifplabel, MAGIC_IFNET); 1166 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1167 COUNTER_INC(netinet6_nd6_send); 1168} 1169 | 798COUNTER_DECL(netinet_icmp_reply); 799static void 800test_netinet_icmp_reply(struct mbuf *mrecv, struct label *mrecvlabel, 801 struct mbuf *msend, struct label *msendlabel) 802{ 803 804 LABEL_CHECK(mrecvlabel, MAGIC_MBUF); 805 LABEL_CHECK(msendlabel, MAGIC_MBUF); --- 35 unchanged lines hidden (view full) --- 841 struct mbuf *mbuf, struct label *mbuflabel) 842{ 843 844 LABEL_CHECK(ifplabel, MAGIC_IFNET); 845 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 846 COUNTER_INC(netinet6_nd6_send); 847} 848 |
1170COUNTER_DECL(ifnet_relabel); 1171static void 1172test_ifnet_relabel(struct ucred *cred, struct ifnet *ifp, 1173 struct label *ifplabel, struct label *newlabel) | 849COUNTER_DECL(pipe_check_ioctl); 850static int 851test_pipe_check_ioctl(struct ucred *cred, struct pipepair *pp, 852 struct label *pipelabel, unsigned long cmd, void /* caddr_t */ *data) |
1174{ 1175 1176 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 853{ 854 855 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1177 LABEL_CHECK(ifplabel, MAGIC_IFNET); 1178 LABEL_CHECK(newlabel, MAGIC_IFNET); 1179 COUNTER_INC(ifnet_relabel); 1180} | 856 LABEL_CHECK(pipelabel, MAGIC_PIPE); 857 COUNTER_INC(pipe_check_ioctl); |
1181 | 858 |
1182COUNTER_DECL(ipq_update); 1183static void 1184test_ipq_update(struct mbuf *fragment, struct label *fragmentlabel, 1185 struct ipq *ipq, struct label *ipqlabel) 1186{ 1187 1188 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 1189 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 1190 COUNTER_INC(ipq_update); | 859 return (0); |
1191} 1192 | 860} 861 |
1193COUNTER_DECL(inpcb_sosetlabel); 1194static void 1195test_inpcb_sosetlabel(struct socket *so, struct label *solabel, 1196 struct inpcb *inp, struct label *inplabel) | 862COUNTER_DECL(pipe_check_poll); 863static int 864test_pipe_check_poll(struct ucred *cred, struct pipepair *pp, 865 struct label *pipelabel) |
1197{ 1198 | 866{ 867 |
1199 LABEL_CHECK(solabel, MAGIC_SOCKET); 1200 LABEL_CHECK(inplabel, MAGIC_INPCB); 1201 COUNTER_INC(inpcb_sosetlabel); | 868 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 869 LABEL_CHECK(pipelabel, MAGIC_PIPE); 870 COUNTER_INC(pipe_check_poll); 871 872 return (0); |
1202} 1203 | 873} 874 |
1204/* 1205 * Labeling event operations: processes. 1206 */ 1207COUNTER_DECL(vnode_execve_transition); 1208static void 1209test_vnode_execve_transition(struct ucred *old, struct ucred *new, 1210 struct vnode *vp, struct label *filelabel, 1211 struct label *interpvplabel, struct image_params *imgp, 1212 struct label *execlabel) | 875COUNTER_DECL(pipe_check_read); 876static int 877test_pipe_check_read(struct ucred *cred, struct pipepair *pp, 878 struct label *pipelabel) |
1213{ 1214 | 879{ 880 |
1215 LABEL_CHECK(old->cr_label, MAGIC_CRED); 1216 LABEL_CHECK(new->cr_label, MAGIC_CRED); 1217 LABEL_CHECK(filelabel, MAGIC_VNODE); 1218 LABEL_CHECK(interpvplabel, MAGIC_VNODE); 1219 LABEL_CHECK(execlabel, MAGIC_CRED); 1220 COUNTER_INC(vnode_execve_transition); | 881 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 882 LABEL_CHECK(pipelabel, MAGIC_PIPE); 883 COUNTER_INC(pipe_check_read); 884 885 return (0); |
1221} 1222 | 886} 887 |
1223COUNTER_DECL(vnode_execve_will_transition); | 888COUNTER_DECL(pipe_check_relabel); |
1224static int | 889static int |
1225test_vnode_execve_will_transition(struct ucred *old, struct vnode *vp, 1226 struct label *filelabel, struct label *interpvplabel, 1227 struct image_params *imgp, struct label *execlabel) | 890test_pipe_check_relabel(struct ucred *cred, struct pipepair *pp, 891 struct label *pipelabel, struct label *newlabel) |
1228{ 1229 | 892{ 893 |
1230 LABEL_CHECK(old->cr_label, MAGIC_CRED); 1231 LABEL_CHECK(filelabel, MAGIC_VNODE); 1232 LABEL_CHECK(interpvplabel, MAGIC_VNODE); 1233 LABEL_CHECK(execlabel, MAGIC_CRED); 1234 COUNTER_INC(vnode_execve_will_transition); | 894 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 895 LABEL_CHECK(pipelabel, MAGIC_PIPE); 896 LABEL_CHECK(newlabel, MAGIC_PIPE); 897 COUNTER_INC(pipe_check_relabel); |
1235 1236 return (0); 1237} 1238 | 898 899 return (0); 900} 901 |
1239COUNTER_DECL(proc_create_swapper); 1240static void 1241test_proc_create_swapper(struct ucred *cred) | 902COUNTER_DECL(pipe_check_stat); 903static int 904test_pipe_check_stat(struct ucred *cred, struct pipepair *pp, 905 struct label *pipelabel) |
1242{ 1243 1244 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 906{ 907 908 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1245 COUNTER_INC(proc_create_swapper); | 909 LABEL_CHECK(pipelabel, MAGIC_PIPE); 910 COUNTER_INC(pipe_check_stat); 911 912 return (0); |
1246} 1247 | 913} 914 |
1248COUNTER_DECL(proc_create_init); 1249static void 1250test_proc_create_init(struct ucred *cred) | 915COUNTER_DECL(pipe_check_write); 916static int 917test_pipe_check_write(struct ucred *cred, struct pipepair *pp, 918 struct label *pipelabel) |
1251{ 1252 1253 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 919{ 920 921 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1254 COUNTER_INC(proc_create_init); | 922 LABEL_CHECK(pipelabel, MAGIC_PIPE); 923 COUNTER_INC(pipe_check_write); 924 925 return (0); |
1255} 1256 | 926} 927 |
1257COUNTER_DECL(cred_relabel); | 928COUNTER_DECL(pipe_copy_label); |
1258static void | 929static void |
1259test_cred_relabel(struct ucred *cred, struct label *newlabel) | 930test_pipe_copy_label(struct label *src, struct label *dest) |
1260{ 1261 | 931{ 932 |
1262 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1263 LABEL_CHECK(newlabel, MAGIC_CRED); 1264 COUNTER_INC(cred_relabel); | 933 LABEL_CHECK(src, MAGIC_PIPE); 934 LABEL_CHECK(dest, MAGIC_PIPE); 935 COUNTER_INC(pipe_copy_label); |
1265} 1266 | 936} 937 |
1267COUNTER_DECL(thread_userret); | 938COUNTER_DECL(pipe_create); |
1268static void | 939static void |
1269test_thread_userret(struct thread *td) | 940test_pipe_create(struct ucred *cred, struct pipepair *pp, 941 struct label *pipelabel) |
1270{ 1271 | 942{ 943 |
1272 COUNTER_INC(thread_userret); | 944 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 945 LABEL_CHECK(pipelabel, MAGIC_PIPE); 946 COUNTER_INC(pipe_create); |
1273} 1274 | 947} 948 |
1275/* 1276 * Label cleanup/flush operations 1277 */ 1278COUNTER_DECL(sysvmsg_cleanup); | 949COUNTER_DECL(pipe_destroy_label); |
1279static void | 950static void |
1280test_sysvmsg_cleanup(struct label *msglabel) | 951test_pipe_destroy_label(struct label *label) |
1281{ 1282 | 952{ 953 |
1283 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 1284 COUNTER_INC(sysvmsg_cleanup); | 954 LABEL_DESTROY(label, MAGIC_PIPE); 955 COUNTER_INC(pipe_destroy_label); |
1285} 1286 | 956} 957 |
1287COUNTER_DECL(sysvmsq_cleanup); 1288static void 1289test_sysvmsq_cleanup(struct label *msqlabel) | 958COUNTER_DECL(pipe_externalize_label); 959static int 960test_pipe_externalize_label(struct label *label, char *element_name, 961 struct sbuf *sb, int *claimed) |
1290{ 1291 | 962{ 963 |
1292 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 1293 COUNTER_INC(sysvmsq_cleanup); | 964 LABEL_CHECK(label, MAGIC_PIPE); 965 COUNTER_INC(pipe_externalize_label); 966 967 return (0); |
1294} 1295 | 968} 969 |
1296COUNTER_DECL(sysvsem_cleanup); | 970COUNTER_DECL(pipe_init_label); |
1297static void | 971static void |
1298test_sysvsem_cleanup(struct label *semalabel) | 972test_pipe_init_label(struct label *label) |
1299{ 1300 | 973{ 974 |
1301 LABEL_CHECK(semalabel, MAGIC_SYSV_SEM); 1302 COUNTER_INC(sysvsem_cleanup); | 975 LABEL_INIT(label, MAGIC_PIPE); 976 COUNTER_INC(pipe_init_label); |
1303} 1304 | 977} 978 |
1305COUNTER_DECL(sysvshm_cleanup); | 979COUNTER_DECL(pipe_relabel); |
1306static void | 980static void |
1307test_sysvshm_cleanup(struct label *shmlabel) | 981test_pipe_relabel(struct ucred *cred, struct pipepair *pp, 982 struct label *pipelabel, struct label *newlabel) |
1308{ 1309 | 983{ 984 |
1310 LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM); 1311 COUNTER_INC(sysvshm_cleanup); | 985 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 986 LABEL_CHECK(pipelabel, MAGIC_PIPE); 987 LABEL_CHECK(newlabel, MAGIC_PIPE); 988 COUNTER_INC(pipe_relabel); |
1312} 1313 | 989} 990 |
1314/* 1315 * Access control checks. 1316 */ 1317COUNTER_DECL(bpfdesc_check_receive); | 991COUNTER_DECL(posixsem_check_destroy); |
1318static int | 992static int |
1319test_bpfdesc_check_receive(struct bpf_d *bpf_d, struct label *bpflabel, 1320 struct ifnet *ifp, struct label *ifplabel) | 993test_posixsem_check_destroy(struct ucred *cred, struct ksem *ks, 994 struct label *kslabel) |
1321{ 1322 | 995{ 996 |
1323 LABEL_CHECK(bpflabel, MAGIC_BPF); 1324 LABEL_CHECK(ifplabel, MAGIC_IFNET); 1325 COUNTER_INC(bpfdesc_check_receive); | 997 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 998 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 999 COUNTER_INC(posixsem_check_destroy); |
1326 1327 return (0); 1328} 1329 | 1000 1001 return (0); 1002} 1003 |
1330COUNTER_DECL(cred_check_relabel); | 1004COUNTER_DECL(posixsem_check_getvalue); |
1331static int | 1005static int |
1332test_cred_check_relabel(struct ucred *cred, struct label *newlabel) | 1006test_posixsem_check_getvalue(struct ucred *cred, struct ksem *ks, 1007 struct label *kslabel) |
1333{ 1334 1335 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1008{ 1009 1010 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1336 LABEL_CHECK(newlabel, MAGIC_CRED); 1337 COUNTER_INC(cred_check_relabel); | 1011 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1012 COUNTER_INC(posixsem_check_getvalue); |
1338 1339 return (0); 1340} 1341 | 1013 1014 return (0); 1015} 1016 |
1342COUNTER_DECL(cred_check_visible); | 1017COUNTER_DECL(posixsem_check_open); |
1343static int | 1018static int |
1344test_cred_check_visible(struct ucred *u1, struct ucred *u2) | 1019test_posixsem_check_open(struct ucred *cred, struct ksem *ks, 1020 struct label *kslabel) |
1345{ 1346 | 1021{ 1022 |
1347 LABEL_CHECK(u1->cr_label, MAGIC_CRED); 1348 LABEL_CHECK(u2->cr_label, MAGIC_CRED); 1349 COUNTER_INC(cred_check_visible); | 1023 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1024 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1025 COUNTER_INC(posixsem_check_open); |
1350 1351 return (0); 1352} 1353 | 1026 1027 return (0); 1028} 1029 |
1354COUNTER_DECL(ifnet_check_relabel); | 1030COUNTER_DECL(posixsem_check_post); |
1355static int | 1031static int |
1356test_ifnet_check_relabel(struct ucred *cred, struct ifnet *ifp, 1357 struct label *ifplabel, struct label *newlabel) | 1032test_posixsem_check_post(struct ucred *cred, struct ksem *ks, 1033 struct label *kslabel) |
1358{ 1359 1360 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1034{ 1035 1036 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1361 LABEL_CHECK(ifplabel, MAGIC_IFNET); 1362 LABEL_CHECK(newlabel, MAGIC_IFNET); 1363 COUNTER_INC(ifnet_check_relabel); | 1037 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1038 COUNTER_INC(posixsem_check_post); |
1364 1365 return (0); 1366} 1367 | 1039 1040 return (0); 1041} 1042 |
1368COUNTER_DECL(ifnet_check_transmit); | 1043COUNTER_DECL(posixsem_check_unlink); |
1369static int | 1044static int |
1370test_ifnet_check_transmit(struct ifnet *ifp, struct label *ifplabel, 1371 struct mbuf *m, struct label *mbuflabel) | 1045test_posixsem_check_unlink(struct ucred *cred, struct ksem *ks, 1046 struct label *kslabel) |
1372{ 1373 | 1047{ 1048 |
1374 LABEL_CHECK(ifplabel, MAGIC_IFNET); 1375 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1376 COUNTER_INC(ifnet_check_transmit); | 1049 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1050 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1051 COUNTER_INC(posixsem_check_unlink); |
1377 1378 return (0); 1379} 1380 | 1052 1053 return (0); 1054} 1055 |
1381COUNTER_DECL(inpcb_check_deliver); | 1056COUNTER_DECL(posixsem_check_wait); |
1382static int | 1057static int |
1383test_inpcb_check_deliver(struct inpcb *inp, struct label *inplabel, 1384 struct mbuf *m, struct label *mlabel) | 1058test_posixsem_check_wait(struct ucred *cred, struct ksem *ks, 1059 struct label *kslabel) |
1385{ 1386 | 1060{ 1061 |
1387 LABEL_CHECK(inplabel, MAGIC_INPCB); 1388 LABEL_CHECK(mlabel, MAGIC_MBUF); 1389 COUNTER_INC(inpcb_check_deliver); | 1062 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1063 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1064 COUNTER_INC(posixsem_check_wait); |
1390 1391 return (0); 1392} 1393 | 1065 1066 return (0); 1067} 1068 |
1394COUNTER_DECL(sysvmsq_check_msgmsq); 1395static int 1396test_sysvmsq_check_msgmsq(struct ucred *cred, struct msg *msgptr, 1397 struct label *msglabel, struct msqid_kernel *msqkptr, 1398 struct label *msqklabel) | 1069COUNTER_DECL(posixsem_create); 1070static void 1071test_posixsem_create(struct ucred *cred, struct ksem *ks, 1072 struct label *kslabel) |
1399{ 1400 | 1073{ 1074 |
1401 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 1402 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); | |
1403 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1075 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1404 COUNTER_INC(sysvmsq_check_msgmsq); | 1076 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1077 COUNTER_INC(posixsem_create); 1078} |
1405 | 1079 |
1406 return (0); | 1080COUNTER_DECL(posixsem_destroy_label); 1081static void 1082test_posixsem_destroy_label(struct label *label) 1083{ 1084 1085 LABEL_DESTROY(label, MAGIC_POSIX_SEM); 1086 COUNTER_INC(posixsem_destroy_label); |
1407} 1408 | 1087} 1088 |
1409COUNTER_DECL(sysvmsq_check_msgrcv); | 1089COUNTER_DECL(posixsem_init_label); 1090static void 1091test_posixsem_init_label(struct label *label) 1092{ 1093 1094 LABEL_INIT(label, MAGIC_POSIX_SEM); 1095 COUNTER_INC(posixsem_init_label); 1096} 1097 1098COUNTER_DECL(proc_check_debug); |
1410static int | 1099static int |
1411test_sysvmsq_check_msgrcv(struct ucred *cred, struct msg *msgptr, 1412 struct label *msglabel) | 1100test_proc_check_debug(struct ucred *cred, struct proc *p) |
1413{ 1414 | 1101{ 1102 |
1415 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); | |
1416 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1103 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1417 COUNTER_INC(sysvmsq_check_msgrcv); | 1104 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1105 COUNTER_INC(proc_check_debug); |
1418 1419 return (0); 1420} 1421 | 1106 1107 return (0); 1108} 1109 |
1422COUNTER_DECL(sysvmsq_check_msgrmid); | 1110COUNTER_DECL(proc_check_sched); |
1423static int | 1111static int |
1424test_sysvmsq_check_msgrmid(struct ucred *cred, struct msg *msgptr, 1425 struct label *msglabel) | 1112test_proc_check_sched(struct ucred *cred, struct proc *p) |
1426{ 1427 | 1113{ 1114 |
1428 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); | |
1429 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1115 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1430 COUNTER_INC(sysvmsq_check_msgrmid); | 1116 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1117 COUNTER_INC(proc_check_sched); |
1431 1432 return (0); 1433} 1434 | 1118 1119 return (0); 1120} 1121 |
1435COUNTER_DECL(sysvmsq_check_msqget); | 1122COUNTER_DECL(proc_check_signal); |
1436static int | 1123static int |
1437test_sysvmsq_check_msqget(struct ucred *cred, 1438 struct msqid_kernel *msqkptr, struct label *msqklabel) | 1124test_proc_check_signal(struct ucred *cred, struct proc *p, int signum) |
1439{ 1440 | 1125{ 1126 |
1441 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); | |
1442 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1127 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1443 COUNTER_INC(sysvmsq_check_msqget); | 1128 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1129 COUNTER_INC(proc_check_signal); |
1444 1445 return (0); 1446} 1447 | 1130 1131 return (0); 1132} 1133 |
1448COUNTER_DECL(sysvmsq_check_msqsnd); | 1134COUNTER_DECL(proc_check_setaudit); |
1449static int | 1135static int |
1450test_sysvmsq_check_msqsnd(struct ucred *cred, 1451 struct msqid_kernel *msqkptr, struct label *msqklabel) | 1136test_proc_check_setaudit(struct ucred *cred, struct auditinfo *ai) |
1452{ 1453 | 1137{ 1138 |
1454 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); | |
1455 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1139 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1456 COUNTER_INC(sysvmsq_check_msqsnd); | 1140 COUNTER_INC(proc_check_setaudit); |
1457 1458 return (0); 1459} 1460 | 1141 1142 return (0); 1143} 1144 |
1461COUNTER_DECL(sysvmsq_check_msqrcv); | 1145COUNTER_DECL(proc_check_setaudit_addr); |
1462static int | 1146static int |
1463test_sysvmsq_check_msqrcv(struct ucred *cred, 1464 struct msqid_kernel *msqkptr, struct label *msqklabel) | 1147test_proc_check_setaudit_addr(struct ucred *cred, 1148 struct auditinfo_addr *aia) |
1465{ 1466 | 1149{ 1150 |
1467 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); | |
1468 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1151 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1469 COUNTER_INC(sysvmsq_check_msqrcv); | 1152 COUNTER_INC(proc_check_setaudit_addr); |
1470 1471 return (0); 1472} 1473 | 1153 1154 return (0); 1155} 1156 |
1474COUNTER_DECL(sysvmsq_check_msqctl); | 1157COUNTER_DECL(proc_check_setauid); |
1475static int | 1158static int |
1476test_sysvmsq_check_msqctl(struct ucred *cred, 1477 struct msqid_kernel *msqkptr, struct label *msqklabel, int cmd) | 1159test_proc_check_setauid(struct ucred *cred, uid_t auid) |
1478{ 1479 | 1160{ 1161 |
1480 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); | |
1481 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1162 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1482 COUNTER_INC(sysvmsq_check_msqctl); | 1163 COUNTER_INC(proc_check_setauid); |
1483 1484 return (0); 1485} 1486 | 1164 1165 return (0); 1166} 1167 |
1487COUNTER_DECL(sysvsem_check_semctl); | 1168COUNTER_DECL(proc_check_setegid); |
1488static int | 1169static int |
1489test_sysvsem_check_semctl(struct ucred *cred, 1490 struct semid_kernel *semakptr, struct label *semaklabel, int cmd) | 1170test_proc_check_setegid(struct ucred *cred, gid_t egid) |
1491{ 1492 1493 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1171{ 1172 1173 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1494 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1495 COUNTER_INC(sysvsem_check_semctl); | 1174 COUNTER_INC(proc_check_setegid); |
1496 | 1175 |
1497 return (0); | 1176 return (0); |
1498} 1499 | 1177} 1178 |
1500COUNTER_DECL(sysvsem_check_semget); | 1179COUNTER_DECL(proc_check_euid); |
1501static int | 1180static int |
1502test_sysvsem_check_semget(struct ucred *cred, 1503 struct semid_kernel *semakptr, struct label *semaklabel) | 1181test_proc_check_seteuid(struct ucred *cred, uid_t euid) |
1504{ 1505 1506 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1182{ 1183 1184 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1507 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1508 COUNTER_INC(sysvsem_check_semget); | 1185 COUNTER_INC(proc_check_euid); |
1509 1510 return (0); 1511} 1512 | 1186 1187 return (0); 1188} 1189 |
1513COUNTER_DECL(sysvsem_check_semop); | 1190COUNTER_DECL(proc_check_setregid); |
1514static int | 1191static int |
1515test_sysvsem_check_semop(struct ucred *cred, 1516 struct semid_kernel *semakptr, struct label *semaklabel, size_t accesstype) | 1192test_proc_check_setregid(struct ucred *cred, gid_t rgid, gid_t egid) |
1517{ 1518 1519 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1193{ 1194 1195 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1520 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1521 COUNTER_INC(sysvsem_check_semop); | 1196 COUNTER_INC(proc_check_setregid); |
1522 1523 return (0); 1524} 1525 | 1197 1198 return (0); 1199} 1200 |
1526COUNTER_DECL(sysvshm_check_shmat); | 1201COUNTER_DECL(proc_check_setreuid); |
1527static int | 1202static int |
1528test_sysvshm_check_shmat(struct ucred *cred, 1529 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int shmflg) | 1203test_proc_check_setreuid(struct ucred *cred, uid_t ruid, uid_t euid) |
1530{ 1531 1532 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1204{ 1205 1206 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1533 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 1534 COUNTER_INC(sysvshm_check_shmat); | 1207 COUNTER_INC(proc_check_setreuid); |
1535 | 1208 |
1536 return (0); | 1209 return (0); |
1537} 1538 | 1210} 1211 |
1539COUNTER_DECL(sysvshm_check_shmctl); | 1212COUNTER_DECL(proc_check_setgid); |
1540static int | 1213static int |
1541test_sysvshm_check_shmctl(struct ucred *cred, 1542 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int cmd) | 1214test_proc_check_setgid(struct ucred *cred, gid_t gid) |
1543{ 1544 1545 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1215{ 1216 1217 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1546 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 1547 COUNTER_INC(sysvshm_check_shmctl); | 1218 COUNTER_INC(proc_check_setgid); |
1548 | 1219 |
1549 return (0); | 1220 return (0); |
1550} 1551 | 1221} 1222 |
1552COUNTER_DECL(sysvshm_check_shmdt); | 1223COUNTER_DECL(proc_check_setgroups); |
1553static int | 1224static int |
1554test_sysvshm_check_shmdt(struct ucred *cred, 1555 struct shmid_kernel *shmsegptr, struct label *shmseglabel) | 1225test_proc_check_setgroups(struct ucred *cred, int ngroups, 1226 gid_t *gidset) |
1556{ 1557 1558 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1227{ 1228 1229 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1559 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 1560 COUNTER_INC(sysvshm_check_shmdt); | 1230 COUNTER_INC(proc_check_setgroups); |
1561 1562 return (0); 1563} 1564 | 1231 1232 return (0); 1233} 1234 |
1565COUNTER_DECL(sysvshm_check_shmget); | 1235COUNTER_DECL(proc_check_setresgid); |
1566static int | 1236static int |
1567test_sysvshm_check_shmget(struct ucred *cred, 1568 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int shmflg) | 1237test_proc_check_setresgid(struct ucred *cred, gid_t rgid, gid_t egid, 1238 gid_t sgid) |
1569{ 1570 1571 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1239{ 1240 1241 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1572 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 1573 COUNTER_INC(sysvshm_check_shmget); | 1242 COUNTER_INC(proc_check_setresgid); |
1574 1575 return (0); 1576} 1577 | 1243 1244 return (0); 1245} 1246 |
1578COUNTER_DECL(kenv_check_dump); | 1247COUNTER_DECL(proc_check_setresuid); |
1579static int | 1248static int |
1580test_kenv_check_dump(struct ucred *cred) | 1249test_proc_check_setresuid(struct ucred *cred, uid_t ruid, uid_t euid, 1250 uid_t suid) |
1581{ 1582 1583 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1251{ 1252 1253 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1584 COUNTER_INC(kenv_check_dump); | 1254 COUNTER_INC(proc_check_setresuid); |
1585 1586 return (0); 1587} 1588 | 1255 1256 return (0); 1257} 1258 |
1589COUNTER_DECL(kenv_check_get); | 1259COUNTER_DECL(proc_check_setuid); |
1590static int | 1260static int |
1591test_kenv_check_get(struct ucred *cred, char *name) | 1261test_proc_check_setuid(struct ucred *cred, uid_t uid) |
1592{ 1593 1594 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1262{ 1263 1264 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1595 COUNTER_INC(kenv_check_get); | 1265 COUNTER_INC(proc_check_setuid); |
1596 1597 return (0); 1598} 1599 | 1266 1267 return (0); 1268} 1269 |
1600COUNTER_DECL(kenv_check_set); | 1270COUNTER_DECL(proc_check_wait); |
1601static int | 1271static int |
1602test_kenv_check_set(struct ucred *cred, char *name, char *value) | 1272test_proc_check_wait(struct ucred *cred, struct proc *p) |
1603{ 1604 1605 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1273{ 1274 1275 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1606 COUNTER_INC(kenv_check_set); | 1276 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1277 COUNTER_INC(proc_check_wait); |
1607 1608 return (0); 1609} 1610 | 1278 1279 return (0); 1280} 1281 |
1611COUNTER_DECL(kenv_check_unset); 1612static int 1613test_kenv_check_unset(struct ucred *cred, char *name) | 1282COUNTER_DECL(proc_create_init); 1283static void 1284test_proc_create_init(struct ucred *cred) |
1614{ 1615 1616 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1285{ 1286 1287 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1617 COUNTER_INC(kenv_check_unset); 1618 1619 return (0); | 1288 COUNTER_INC(proc_create_init); |
1620} 1621 | 1289} 1290 |
1622COUNTER_DECL(kld_check_load); 1623static int 1624test_kld_check_load(struct ucred *cred, struct vnode *vp, 1625 struct label *label) | 1291COUNTER_DECL(proc_create_swapper); 1292static void 1293test_proc_create_swapper(struct ucred *cred) |
1626{ 1627 1628 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1294{ 1295 1296 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1629 LABEL_CHECK(label, MAGIC_VNODE); 1630 COUNTER_INC(kld_check_load); | 1297 COUNTER_INC(proc_create_swapper); 1298} |
1631 | 1299 |
1632 return (0); | 1300COUNTER_DECL(proc_destroy_label); 1301static void 1302test_proc_destroy_label(struct label *label) 1303{ 1304 1305 LABEL_DESTROY(label, MAGIC_PROC); 1306 COUNTER_INC(proc_destroy_label); |
1633} 1634 | 1307} 1308 |
1635COUNTER_DECL(kld_check_stat); | 1309COUNTER_DECL(proc_init_label); 1310static void 1311test_proc_init_label(struct label *label) 1312{ 1313 1314 LABEL_INIT(label, MAGIC_PROC); 1315 COUNTER_INC(proc_init_label); 1316} 1317 1318COUNTER_DECL(socket_check_accept); |
1636static int | 1319static int |
1637test_kld_check_stat(struct ucred *cred) | 1320test_socket_check_accept(struct ucred *cred, struct socket *so, 1321 struct label *solabel) |
1638{ 1639 1640 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1322{ 1323 1324 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1641 COUNTER_INC(kld_check_stat); | 1325 LABEL_CHECK(solabel, MAGIC_SOCKET); 1326 COUNTER_INC(socket_check_accept); |
1642 1643 return (0); 1644} 1645 | 1327 1328 return (0); 1329} 1330 |
1646COUNTER_DECL(mount_check_stat); | 1331COUNTER_DECL(socket_check_bind); |
1647static int | 1332static int |
1648test_mount_check_stat(struct ucred *cred, struct mount *mp, 1649 struct label *mplabel) | 1333test_socket_check_bind(struct ucred *cred, struct socket *so, 1334 struct label *solabel, struct sockaddr *sa) |
1650{ 1651 1652 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1335{ 1336 1337 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1653 LABEL_CHECK(mplabel, MAGIC_MOUNT); 1654 COUNTER_INC(mount_check_stat); | 1338 LABEL_CHECK(solabel, MAGIC_SOCKET); 1339 COUNTER_INC(socket_check_bind); |
1655 1656 return (0); 1657} 1658 | 1340 1341 return (0); 1342} 1343 |
1659COUNTER_DECL(pipe_check_ioctl); | 1344COUNTER_DECL(socket_check_connect); |
1660static int | 1345static int |
1661test_pipe_check_ioctl(struct ucred *cred, struct pipepair *pp, 1662 struct label *pipelabel, unsigned long cmd, void /* caddr_t */ *data) | 1346test_socket_check_connect(struct ucred *cred, struct socket *so, 1347 struct label *solabel, struct sockaddr *sa) |
1663{ 1664 1665 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1348{ 1349 1350 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1666 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1667 COUNTER_INC(pipe_check_ioctl); | 1351 LABEL_CHECK(solabel, MAGIC_SOCKET); 1352 COUNTER_INC(socket_check_connect); |
1668 1669 return (0); 1670} 1671 | 1353 1354 return (0); 1355} 1356 |
1672COUNTER_DECL(pipe_check_poll); | 1357COUNTER_DECL(socket_check_deliver); |
1673static int | 1358static int |
1674test_pipe_check_poll(struct ucred *cred, struct pipepair *pp, 1675 struct label *pipelabel) | 1359test_socket_check_deliver(struct socket *so, struct label *solabel, 1360 struct mbuf *m, struct label *mlabel) |
1676{ 1677 | 1361{ 1362 |
1678 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1679 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1680 COUNTER_INC(pipe_check_poll); | 1363 LABEL_CHECK(solabel, MAGIC_SOCKET); 1364 LABEL_CHECK(mlabel, MAGIC_MBUF); 1365 COUNTER_INC(socket_check_deliver); |
1681 1682 return (0); 1683} 1684 | 1366 1367 return (0); 1368} 1369 |
1685COUNTER_DECL(pipe_check_read); | 1370COUNTER_DECL(socket_check_listen); |
1686static int | 1371static int |
1687test_pipe_check_read(struct ucred *cred, struct pipepair *pp, 1688 struct label *pipelabel) | 1372test_socket_check_listen(struct ucred *cred, struct socket *so, 1373 struct label *solabel) |
1689{ 1690 1691 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1374{ 1375 1376 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1692 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1693 COUNTER_INC(pipe_check_read); | 1377 LABEL_CHECK(solabel, MAGIC_SOCKET); 1378 COUNTER_INC(socket_check_listen); |
1694 1695 return (0); 1696} 1697 | 1379 1380 return (0); 1381} 1382 |
1698COUNTER_DECL(pipe_check_relabel); | 1383COUNTER_DECL(socket_check_poll); |
1699static int | 1384static int |
1700test_pipe_check_relabel(struct ucred *cred, struct pipepair *pp, 1701 struct label *pipelabel, struct label *newlabel) | 1385test_socket_check_poll(struct ucred *cred, struct socket *so, 1386 struct label *solabel) |
1702{ 1703 1704 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1387{ 1388 1389 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1705 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1706 LABEL_CHECK(newlabel, MAGIC_PIPE); 1707 COUNTER_INC(pipe_check_relabel); | 1390 LABEL_CHECK(solabel, MAGIC_SOCKET); 1391 COUNTER_INC(socket_check_poll); |
1708 1709 return (0); 1710} 1711 | 1392 1393 return (0); 1394} 1395 |
1712COUNTER_DECL(pipe_check_stat); | 1396COUNTER_DECL(socket_check_receive); |
1713static int | 1397static int |
1714test_pipe_check_stat(struct ucred *cred, struct pipepair *pp, 1715 struct label *pipelabel) | 1398test_socket_check_receive(struct ucred *cred, struct socket *so, 1399 struct label *solabel) |
1716{ 1717 1718 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1400{ 1401 1402 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1719 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1720 COUNTER_INC(pipe_check_stat); | 1403 LABEL_CHECK(solabel, MAGIC_SOCKET); 1404 COUNTER_INC(socket_check_receive); |
1721 1722 return (0); 1723} 1724 | 1405 1406 return (0); 1407} 1408 |
1725COUNTER_DECL(pipe_check_write); | 1409COUNTER_DECL(socket_check_relabel); |
1726static int | 1410static int |
1727test_pipe_check_write(struct ucred *cred, struct pipepair *pp, 1728 struct label *pipelabel) | 1411test_socket_check_relabel(struct ucred *cred, struct socket *so, 1412 struct label *solabel, struct label *newlabel) |
1729{ 1730 1731 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1413{ 1414 1415 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1732 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1733 COUNTER_INC(pipe_check_write); | 1416 LABEL_CHECK(solabel, MAGIC_SOCKET); 1417 LABEL_CHECK(newlabel, MAGIC_SOCKET); 1418 COUNTER_INC(socket_check_relabel); |
1734 1735 return (0); 1736} 1737 | 1419 1420 return (0); 1421} 1422 |
1738COUNTER_DECL(posixsem_check_destroy); | 1423COUNTER_DECL(socket_check_send); |
1739static int | 1424static int |
1740test_posixsem_check_destroy(struct ucred *cred, struct ksem *ks, 1741 struct label *kslabel) | 1425test_socket_check_send(struct ucred *cred, struct socket *so, 1426 struct label *solabel) |
1742{ 1743 1744 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1427{ 1428 1429 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1745 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1746 COUNTER_INC(posixsem_check_destroy); | 1430 LABEL_CHECK(solabel, MAGIC_SOCKET); 1431 COUNTER_INC(socket_check_send); |
1747 1748 return (0); 1749} 1750 | 1432 1433 return (0); 1434} 1435 |
1751COUNTER_DECL(posixsem_check_getvalue); | 1436COUNTER_DECL(socket_check_stat); |
1752static int | 1437static int |
1753test_posixsem_check_getvalue(struct ucred *cred, struct ksem *ks, 1754 struct label *kslabel) | 1438test_socket_check_stat(struct ucred *cred, struct socket *so, 1439 struct label *solabel) |
1755{ 1756 1757 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1440{ 1441 1442 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1758 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1759 COUNTER_INC(posixsem_check_getvalue); | 1443 LABEL_CHECK(solabel, MAGIC_SOCKET); 1444 COUNTER_INC(socket_check_stat); |
1760 1761 return (0); 1762} 1763 | 1445 1446 return (0); 1447} 1448 |
1764COUNTER_DECL(posixsem_check_open); | 1449COUNTER_DECL(socket_check_visible); |
1765static int | 1450static int |
1766test_posixsem_check_open(struct ucred *cred, struct ksem *ks, 1767 struct label *kslabel) | 1451test_socket_check_visible(struct ucred *cred, struct socket *so, 1452 struct label *solabel) |
1768{ 1769 1770 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1453{ 1454 1455 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1771 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1772 COUNTER_INC(posixsem_check_open); | 1456 LABEL_CHECK(solabel, MAGIC_SOCKET); 1457 COUNTER_INC(socket_check_visible); |
1773 1774 return (0); 1775} 1776 | 1458 1459 return (0); 1460} 1461 |
1777COUNTER_DECL(posixsem_check_post); 1778static int 1779test_posixsem_check_post(struct ucred *cred, struct ksem *ks, 1780 struct label *kslabel) | 1462COUNTER_DECL(socket_copy_label); 1463static void 1464test_socket_copy_label(struct label *src, struct label *dest) |
1781{ 1782 | 1465{ 1466 |
1467 LABEL_CHECK(src, MAGIC_SOCKET); 1468 LABEL_CHECK(dest, MAGIC_SOCKET); 1469 COUNTER_INC(socket_copy_label); 1470} 1471 1472COUNTER_DECL(socket_create); 1473static void 1474test_socket_create(struct ucred *cred, struct socket *socket, 1475 struct label *socketlabel) 1476{ 1477 |
|
1783 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1478 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1784 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1785 COUNTER_INC(posixsem_check_post); | 1479 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1480 COUNTER_INC(socket_create); 1481} |
1786 | 1482 |
1787 return (0); | 1483COUNTER_DECL(socket_create_mbuf); 1484static void 1485test_socket_create_mbuf(struct socket *so, struct label *socketlabel, 1486 struct mbuf *m, struct label *mbuflabel) 1487{ 1488 1489 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1490 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1491 COUNTER_INC(socket_create_mbuf); |
1788} 1789 | 1492} 1493 |
1790COUNTER_DECL(posixsem_check_unlink); | 1494COUNTER_DECL(socket_destroy_label); 1495static void 1496test_socket_destroy_label(struct label *label) 1497{ 1498 1499 LABEL_DESTROY(label, MAGIC_SOCKET); 1500 COUNTER_INC(socket_destroy_label); 1501} 1502 1503COUNTER_DECL(socket_externalize_label); |
1791static int | 1504static int |
1792test_posixsem_check_unlink(struct ucred *cred, struct ksem *ks, 1793 struct label *kslabel) | 1505test_socket_externalize_label(struct label *label, char *element_name, 1506 struct sbuf *sb, int *claimed) |
1794{ 1795 | 1507{ 1508 |
1796 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1797 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1798 COUNTER_INC(posixsem_check_unlink); | 1509 LABEL_CHECK(label, MAGIC_SOCKET); 1510 COUNTER_INC(socket_externalize_label); |
1799 1800 return (0); 1801} 1802 | 1511 1512 return (0); 1513} 1514 |
1803COUNTER_DECL(posixsem_check_wait); | 1515COUNTER_DECL(socket_init_label); |
1804static int | 1516static int |
1805test_posixsem_check_wait(struct ucred *cred, struct ksem *ks, 1806 struct label *kslabel) | 1517test_socket_init_label(struct label *label, int flag) |
1807{ 1808 | 1518{ 1519 |
1809 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1810 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1811 COUNTER_INC(posixsem_check_wait); | 1520 if (flag & M_WAITOK) 1521 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 1522 "test_socket_init_label() at %s:%d", __FILE__, 1523 __LINE__); |
1812 | 1524 |
1525 LABEL_INIT(label, MAGIC_SOCKET); 1526 COUNTER_INC(socket_init_label); |
|
1813 return (0); 1814} 1815 | 1527 return (0); 1528} 1529 |
1816COUNTER_DECL(proc_check_debug); 1817static int 1818test_proc_check_debug(struct ucred *cred, struct proc *p) | 1530COUNTER_DECL(socket_newconn); 1531static void 1532test_socket_newconn(struct socket *oldsocket, 1533 struct label *oldsocketlabel, struct socket *newsocket, 1534 struct label *newsocketlabel) |
1819{ 1820 | 1535{ 1536 |
1537 LABEL_CHECK(oldsocketlabel, MAGIC_SOCKET); 1538 LABEL_CHECK(newsocketlabel, MAGIC_SOCKET); 1539 COUNTER_INC(socket_newconn); 1540} 1541 1542COUNTER_DECL(socket_relabel); 1543static void 1544test_socket_relabel(struct ucred *cred, struct socket *socket, 1545 struct label *socketlabel, struct label *newlabel) 1546{ 1547 |
|
1821 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1548 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1822 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1823 COUNTER_INC(proc_check_debug); | 1549 LABEL_CHECK(newlabel, MAGIC_SOCKET); 1550 COUNTER_INC(socket_relabel); 1551} |
1824 | 1552 |
1825 return (0); | 1553COUNTER_DECL(socketpeer_destroy_label); 1554static void 1555test_socketpeer_destroy_label(struct label *label) 1556{ 1557 1558 LABEL_DESTROY(label, MAGIC_SOCKET); 1559 COUNTER_INC(socketpeer_destroy_label); |
1826} 1827 | 1560} 1561 |
1828COUNTER_DECL(proc_check_sched); | 1562COUNTER_DECL(socketpeer_externalize_label); |
1829static int | 1563static int |
1830test_proc_check_sched(struct ucred *cred, struct proc *p) | 1564test_socketpeer_externalize_label(struct label *label, char *element_name, 1565 struct sbuf *sb, int *claimed) |
1831{ 1832 | 1566{ 1567 |
1833 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1834 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1835 COUNTER_INC(proc_check_sched); | 1568 LABEL_CHECK(label, MAGIC_SOCKET); 1569 COUNTER_INC(socketpeer_externalize_label); |
1836 1837 return (0); 1838} 1839 | 1570 1571 return (0); 1572} 1573 |
1840COUNTER_DECL(proc_check_signal); | 1574COUNTER_DECL(socketpeer_init_label); |
1841static int | 1575static int |
1842test_proc_check_signal(struct ucred *cred, struct proc *p, int signum) | 1576test_socketpeer_init_label(struct label *label, int flag) |
1843{ 1844 | 1577{ 1578 |
1845 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1846 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1847 COUNTER_INC(proc_check_signal); | 1579 if (flag & M_WAITOK) 1580 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 1581 "test_socketpeer_init_label() at %s:%d", __FILE__, 1582 __LINE__); |
1848 | 1583 |
1584 LABEL_INIT(label, MAGIC_SOCKET); 1585 COUNTER_INC(socketpeer_init_label); |
|
1849 return (0); 1850} 1851 | 1586 return (0); 1587} 1588 |
1852COUNTER_DECL(proc_check_setaudit); 1853static int 1854test_proc_check_setaudit(struct ucred *cred, struct auditinfo *ai) | 1589COUNTER_DECL(socketpeer_set_from_mbuf); 1590static void 1591test_socketpeer_set_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel, 1592 struct socket *socket, struct label *socketpeerlabel) |
1855{ 1856 | 1593{ 1594 |
1857 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1858 COUNTER_INC(proc_check_setaudit); | 1595 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1596 LABEL_CHECK(socketpeerlabel, MAGIC_SOCKET); 1597 COUNTER_INC(socketpeer_set_from_mbuf); 1598} |
1859 | 1599 |
1860 return (0); | 1600COUNTER_DECL(socketpeer_set_from_socket); 1601static void 1602test_socketpeer_set_from_socket(struct socket *oldsocket, 1603 struct label *oldsocketlabel, struct socket *newsocket, 1604 struct label *newsocketpeerlabel) 1605{ 1606 1607 LABEL_CHECK(oldsocketlabel, MAGIC_SOCKET); 1608 LABEL_CHECK(newsocketpeerlabel, MAGIC_SOCKET); 1609 COUNTER_INC(socketpeer_set_from_socket); |
1861} 1862 | 1610} 1611 |
1863COUNTER_DECL(proc_check_setaudit_addr); 1864static int 1865test_proc_check_setaudit_addr(struct ucred *cred, 1866 struct auditinfo_addr *aia) | 1612COUNTER_DECL(syncache_create); 1613static void 1614test_syncache_create(struct label *label, struct inpcb *inp) |
1867{ 1868 | 1615{ 1616 |
1869 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1870 COUNTER_INC(proc_check_setaudit_addr); | 1617 LABEL_CHECK(label, MAGIC_SYNCACHE); 1618 COUNTER_INC(syncache_create); 1619} |
1871 | 1620 |
1872 return (0); | 1621COUNTER_DECL(syncache_create_mbuf); 1622static void 1623test_syncache_create_mbuf(struct label *sc_label, struct mbuf *m, 1624 struct label *mlabel) 1625{ 1626 1627 LABEL_CHECK(sc_label, MAGIC_SYNCACHE); 1628 LABEL_CHECK(mlabel, MAGIC_MBUF); 1629 COUNTER_INC(syncache_create_mbuf); |
1873} 1874 | 1630} 1631 |
1875COUNTER_DECL(proc_check_setauid); 1876static int 1877test_proc_check_setauid(struct ucred *cred, uid_t auid) | 1632COUNTER_DECL(syncache_destroy_label); 1633static void 1634test_syncache_destroy_label(struct label *label) |
1878{ 1879 | 1635{ 1636 |
1880 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1881 COUNTER_INC(proc_check_setauid); | 1637 LABEL_DESTROY(label, MAGIC_SYNCACHE); 1638 COUNTER_INC(syncache_destroy_label); 1639} |
1882 | 1640 |
1641COUNTER_DECL(syncache_init_label); 1642static int 1643test_syncache_init_label(struct label *label, int flag) 1644{ 1645 1646 if (flag & M_WAITOK) 1647 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 1648 "test_syncache_init_label() at %s:%d", __FILE__, 1649 __LINE__); 1650 LABEL_INIT(label, MAGIC_SYNCACHE); 1651 COUNTER_INC(syncache_init_label); |
|
1883 return (0); 1884} 1885 | 1652 return (0); 1653} 1654 |
1886COUNTER_DECL(proc_check_setuid); | 1655COUNTER_DECL(system_check_acct); |
1887static int | 1656static int |
1888test_proc_check_setuid(struct ucred *cred, uid_t uid) | 1657test_system_check_acct(struct ucred *cred, struct vnode *vp, 1658 struct label *vplabel) |
1889{ 1890 1891 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1659{ 1660 1661 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1892 COUNTER_INC(proc_check_setuid); | 1662 LABEL_CHECK(vplabel, MAGIC_VNODE); 1663 COUNTER_INC(system_check_acct); |
1893 1894 return (0); 1895} 1896 | 1664 1665 return (0); 1666} 1667 |
1897COUNTER_DECL(proc_check_euid); | 1668COUNTER_DECL(system_check_audit); |
1898static int | 1669static int |
1899test_proc_check_seteuid(struct ucred *cred, uid_t euid) | 1670test_system_check_audit(struct ucred *cred, void *record, int length) |
1900{ 1901 1902 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1671{ 1672 1673 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1903 COUNTER_INC(proc_check_euid); | 1674 COUNTER_INC(system_check_audit); |
1904 1905 return (0); 1906} 1907 | 1675 1676 return (0); 1677} 1678 |
1908COUNTER_DECL(proc_check_setgid); | 1679COUNTER_DECL(system_check_auditctl); |
1909static int | 1680static int |
1910test_proc_check_setgid(struct ucred *cred, gid_t gid) | 1681test_system_check_auditctl(struct ucred *cred, struct vnode *vp, 1682 struct label *vplabel) |
1911{ 1912 1913 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1683{ 1684 1685 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1914 COUNTER_INC(proc_check_setgid); | 1686 LABEL_CHECK(vplabel, MAGIC_VNODE); 1687 COUNTER_INC(system_check_auditctl); |
1915 1916 return (0); 1917} 1918 | 1688 1689 return (0); 1690} 1691 |
1919COUNTER_DECL(proc_check_setegid); | 1692COUNTER_DECL(system_check_auditon); |
1920static int | 1693static int |
1921test_proc_check_setegid(struct ucred *cred, gid_t egid) | 1694test_system_check_auditon(struct ucred *cred, int cmd) |
1922{ 1923 1924 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1695{ 1696 1697 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1925 COUNTER_INC(proc_check_setegid); | 1698 COUNTER_INC(system_check_auditon); |
1926 1927 return (0); 1928} 1929 | 1699 1700 return (0); 1701} 1702 |
1930COUNTER_DECL(proc_check_setgroups); | 1703COUNTER_DECL(system_check_reboot); |
1931static int | 1704static int |
1932test_proc_check_setgroups(struct ucred *cred, int ngroups, 1933 gid_t *gidset) | 1705test_system_check_reboot(struct ucred *cred, int how) |
1934{ 1935 1936 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1706{ 1707 1708 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1937 COUNTER_INC(proc_check_setgroups); | 1709 COUNTER_INC(system_check_reboot); |
1938 1939 return (0); 1940} 1941 | 1710 1711 return (0); 1712} 1713 |
1942COUNTER_DECL(proc_check_setreuid); | 1714COUNTER_DECL(system_check_swapoff); |
1943static int | 1715static int |
1944test_proc_check_setreuid(struct ucred *cred, uid_t ruid, uid_t euid) | 1716test_system_check_swapoff(struct ucred *cred, struct vnode *vp, 1717 struct label *vplabel) |
1945{ 1946 1947 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1718{ 1719 1720 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1948 COUNTER_INC(proc_check_setreuid); | 1721 LABEL_CHECK(vplabel, MAGIC_VNODE); 1722 COUNTER_INC(system_check_swapoff); |
1949 1950 return (0); 1951} 1952 | 1723 1724 return (0); 1725} 1726 |
1953COUNTER_DECL(proc_check_setregid); | 1727COUNTER_DECL(system_check_swapon); |
1954static int | 1728static int |
1955test_proc_check_setregid(struct ucred *cred, gid_t rgid, gid_t egid) | 1729test_system_check_swapon(struct ucred *cred, struct vnode *vp, 1730 struct label *vplabel) |
1956{ 1957 1958 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1731{ 1732 1733 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1959 COUNTER_INC(proc_check_setregid); | 1734 LABEL_CHECK(vplabel, MAGIC_VNODE); 1735 COUNTER_INC(system_check_swapon); |
1960 1961 return (0); 1962} 1963 | 1736 1737 return (0); 1738} 1739 |
1964COUNTER_DECL(proc_check_setresuid); | 1740COUNTER_DECL(system_check_sysctl); |
1965static int | 1741static int |
1966test_proc_check_setresuid(struct ucred *cred, uid_t ruid, uid_t euid, 1967 uid_t suid) | 1742test_system_check_sysctl(struct ucred *cred, struct sysctl_oid *oidp, 1743 void *arg1, int arg2, struct sysctl_req *req) |
1968{ 1969 1970 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1744{ 1745 1746 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
1971 COUNTER_INC(proc_check_setresuid); | 1747 COUNTER_INC(system_check_sysctl); |
1972 1973 return (0); 1974} 1975 | 1748 1749 return (0); 1750} 1751 |
1976COUNTER_DECL(proc_check_setresgid); 1977static int 1978test_proc_check_setresgid(struct ucred *cred, gid_t rgid, gid_t egid, 1979 gid_t sgid) | 1752COUNTER_DECL(sysvmsg_cleanup); 1753static void 1754test_sysvmsg_cleanup(struct label *msglabel) |
1980{ 1981 | 1755{ 1756 |
1982 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1983 COUNTER_INC(proc_check_setresgid); | 1757 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 1758 COUNTER_INC(sysvmsg_cleanup); 1759} |
1984 | 1760 |
1985 return (0); | 1761COUNTER_DECL(sysvmsg_create); 1762static void 1763test_sysvmsg_create(struct ucred *cred, struct msqid_kernel *msqkptr, 1764 struct label *msqlabel, struct msg *msgptr, struct label *msglabel) 1765{ 1766 1767 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 1768 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 1769 COUNTER_INC(sysvmsg_create); |
1986} 1987 | 1770} 1771 |
1988COUNTER_DECL(proc_check_wait); 1989static int 1990test_proc_check_wait(struct ucred *cred, struct proc *p) | 1772COUNTER_DECL(sysvmsg_destroy_label); 1773static void 1774test_sysvmsg_destroy_label(struct label *label) |
1991{ 1992 | 1775{ 1776 |
1993 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1994 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1995 COUNTER_INC(proc_check_wait); | 1777 LABEL_DESTROY(label, MAGIC_SYSV_MSG); 1778 COUNTER_INC(sysvmsg_destroy_label); 1779} |
1996 | 1780 |
1997 return (0); | 1781COUNTER_DECL(sysvmsg_init_label); 1782static void 1783test_sysvmsg_init_label(struct label *label) 1784{ 1785 LABEL_INIT(label, MAGIC_SYSV_MSG); 1786 COUNTER_INC(sysvmsg_init_label); |
1998} 1999 | 1787} 1788 |
2000COUNTER_DECL(socket_check_accept); | 1789COUNTER_DECL(sysvmsq_check_msgmsq); |
2001static int | 1790static int |
2002test_socket_check_accept(struct ucred *cred, struct socket *so, 2003 struct label *solabel) | 1791test_sysvmsq_check_msgmsq(struct ucred *cred, struct msg *msgptr, 1792 struct label *msglabel, struct msqid_kernel *msqkptr, 1793 struct label *msqklabel) |
2004{ 2005 | 1794{ 1795 |
1796 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 1797 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); |
|
2006 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1798 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2007 LABEL_CHECK(solabel, MAGIC_SOCKET); 2008 COUNTER_INC(socket_check_accept); | 1799 COUNTER_INC(sysvmsq_check_msgmsq); |
2009 | 1800 |
2010 return (0); | 1801 return (0); |
2011} 2012 | 1802} 1803 |
2013COUNTER_DECL(socket_check_bind); | 1804COUNTER_DECL(sysvmsq_check_msgrcv); |
2014static int | 1805static int |
2015test_socket_check_bind(struct ucred *cred, struct socket *so, 2016 struct label *solabel, struct sockaddr *sa) | 1806test_sysvmsq_check_msgrcv(struct ucred *cred, struct msg *msgptr, 1807 struct label *msglabel) |
2017{ 2018 | 1808{ 1809 |
1810 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); |
|
2019 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1811 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2020 LABEL_CHECK(solabel, MAGIC_SOCKET); 2021 COUNTER_INC(socket_check_bind); | 1812 COUNTER_INC(sysvmsq_check_msgrcv); |
2022 2023 return (0); 2024} 2025 | 1813 1814 return (0); 1815} 1816 |
2026COUNTER_DECL(socket_check_connect); | 1817COUNTER_DECL(sysvmsq_check_msgrmid); |
2027static int | 1818static int |
2028test_socket_check_connect(struct ucred *cred, struct socket *so, 2029 struct label *solabel, struct sockaddr *sa) | 1819test_sysvmsq_check_msgrmid(struct ucred *cred, struct msg *msgptr, 1820 struct label *msglabel) |
2030{ 2031 | 1821{ 1822 |
1823 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); |
|
2032 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1824 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2033 LABEL_CHECK(solabel, MAGIC_SOCKET); 2034 COUNTER_INC(socket_check_connect); | 1825 COUNTER_INC(sysvmsq_check_msgrmid); |
2035 2036 return (0); 2037} 2038 | 1826 1827 return (0); 1828} 1829 |
2039COUNTER_DECL(socket_check_deliver); | 1830COUNTER_DECL(sysvmsq_check_msqget); |
2040static int | 1831static int |
2041test_socket_check_deliver(struct socket *so, struct label *solabel, 2042 struct mbuf *m, struct label *mlabel) | 1832test_sysvmsq_check_msqget(struct ucred *cred, 1833 struct msqid_kernel *msqkptr, struct label *msqklabel) |
2043{ 2044 | 1834{ 1835 |
2045 LABEL_CHECK(solabel, MAGIC_SOCKET); 2046 LABEL_CHECK(mlabel, MAGIC_MBUF); 2047 COUNTER_INC(socket_check_deliver); | 1836 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 1837 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1838 COUNTER_INC(sysvmsq_check_msqget); |
2048 2049 return (0); 2050} 2051 | 1839 1840 return (0); 1841} 1842 |
2052COUNTER_DECL(socket_check_listen); | 1843COUNTER_DECL(sysvmsq_check_msqsnd); |
2053static int | 1844static int |
2054test_socket_check_listen(struct ucred *cred, struct socket *so, 2055 struct label *solabel) | 1845test_sysvmsq_check_msqsnd(struct ucred *cred, 1846 struct msqid_kernel *msqkptr, struct label *msqklabel) |
2056{ 2057 | 1847{ 1848 |
1849 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); |
|
2058 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1850 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2059 LABEL_CHECK(solabel, MAGIC_SOCKET); 2060 COUNTER_INC(socket_check_listen); | 1851 COUNTER_INC(sysvmsq_check_msqsnd); |
2061 2062 return (0); 2063} 2064 | 1852 1853 return (0); 1854} 1855 |
2065COUNTER_DECL(socket_check_poll); | 1856COUNTER_DECL(sysvmsq_check_msqrcv); |
2066static int | 1857static int |
2067test_socket_check_poll(struct ucred *cred, struct socket *so, 2068 struct label *solabel) | 1858test_sysvmsq_check_msqrcv(struct ucred *cred, 1859 struct msqid_kernel *msqkptr, struct label *msqklabel) |
2069{ 2070 | 1860{ 1861 |
1862 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); |
|
2071 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1863 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2072 LABEL_CHECK(solabel, MAGIC_SOCKET); 2073 COUNTER_INC(socket_check_poll); | 1864 COUNTER_INC(sysvmsq_check_msqrcv); |
2074 2075 return (0); 2076} 2077 | 1865 1866 return (0); 1867} 1868 |
2078COUNTER_DECL(socket_check_receive); | 1869COUNTER_DECL(sysvmsq_check_msqctl); |
2079static int | 1870static int |
2080test_socket_check_receive(struct ucred *cred, struct socket *so, 2081 struct label *solabel) | 1871test_sysvmsq_check_msqctl(struct ucred *cred, 1872 struct msqid_kernel *msqkptr, struct label *msqklabel, int cmd) |
2082{ 2083 | 1873{ 1874 |
1875 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); |
|
2084 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1876 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2085 LABEL_CHECK(solabel, MAGIC_SOCKET); 2086 COUNTER_INC(socket_check_receive); | 1877 COUNTER_INC(sysvmsq_check_msqctl); |
2087 2088 return (0); 2089} 2090 | 1878 1879 return (0); 1880} 1881 |
2091COUNTER_DECL(socket_check_relabel); 2092static int 2093test_socket_check_relabel(struct ucred *cred, struct socket *so, 2094 struct label *solabel, struct label *newlabel) | 1882COUNTER_DECL(sysvmsq_cleanup); 1883static void 1884test_sysvmsq_cleanup(struct label *msqlabel) |
2095{ 2096 | 1885{ 1886 |
2097 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2098 LABEL_CHECK(solabel, MAGIC_SOCKET); 2099 LABEL_CHECK(newlabel, MAGIC_SOCKET); 2100 COUNTER_INC(socket_check_relabel); | 1887 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 1888 COUNTER_INC(sysvmsq_cleanup); 1889} |
2101 | 1890 |
2102 return (0); | 1891COUNTER_DECL(sysvmsq_create); 1892static void 1893test_sysvmsq_create(struct ucred *cred, 1894 struct msqid_kernel *msqkptr, struct label *msqlabel) 1895{ 1896 1897 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 1898 COUNTER_INC(sysvmsq_create); |
2103} 2104 | 1899} 1900 |
2105COUNTER_DECL(socket_check_send); 2106static int 2107test_socket_check_send(struct ucred *cred, struct socket *so, 2108 struct label *solabel) | 1901COUNTER_DECL(sysvmsq_destroy_label); 1902static void 1903test_sysvmsq_destroy_label(struct label *label) |
2109{ 2110 | 1904{ 1905 |
2111 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2112 LABEL_CHECK(solabel, MAGIC_SOCKET); 2113 COUNTER_INC(socket_check_send); | 1906 LABEL_DESTROY(label, MAGIC_SYSV_MSQ); 1907 COUNTER_INC(sysvmsq_destroy_label); 1908} |
2114 | 1909 |
2115 return (0); | 1910COUNTER_DECL(sysvmsq_init_label); 1911static void 1912test_sysvmsq_init_label(struct label *label) 1913{ 1914 LABEL_INIT(label, MAGIC_SYSV_MSQ); 1915 COUNTER_INC(sysvmsq_init_label); |
2116} 2117 | 1916} 1917 |
2118COUNTER_DECL(socket_check_stat); | 1918COUNTER_DECL(sysvsem_check_semctl); |
2119static int | 1919static int |
2120test_socket_check_stat(struct ucred *cred, struct socket *so, 2121 struct label *solabel) | 1920test_sysvsem_check_semctl(struct ucred *cred, 1921 struct semid_kernel *semakptr, struct label *semaklabel, int cmd) |
2122{ 2123 2124 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1922{ 1923 1924 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2125 LABEL_CHECK(solabel, MAGIC_SOCKET); 2126 COUNTER_INC(socket_check_stat); | 1925 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1926 COUNTER_INC(sysvsem_check_semctl); |
2127 | 1927 |
2128 return (0); | 1928 return (0); |
2129} 2130 | 1929} 1930 |
2131COUNTER_DECL(socket_check_visible); | 1931COUNTER_DECL(sysvsem_check_semget); |
2132static int | 1932static int |
2133test_socket_check_visible(struct ucred *cred, struct socket *so, 2134 struct label *solabel) | 1933test_sysvsem_check_semget(struct ucred *cred, 1934 struct semid_kernel *semakptr, struct label *semaklabel) |
2135{ 2136 2137 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1935{ 1936 1937 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2138 LABEL_CHECK(solabel, MAGIC_SOCKET); 2139 COUNTER_INC(socket_check_visible); | 1938 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1939 COUNTER_INC(sysvsem_check_semget); |
2140 2141 return (0); 2142} 2143 | 1940 1941 return (0); 1942} 1943 |
2144COUNTER_DECL(system_check_acct); | 1944COUNTER_DECL(sysvsem_check_semop); |
2145static int | 1945static int |
2146test_system_check_acct(struct ucred *cred, struct vnode *vp, 2147 struct label *vplabel) | 1946test_sysvsem_check_semop(struct ucred *cred, 1947 struct semid_kernel *semakptr, struct label *semaklabel, size_t accesstype) |
2148{ 2149 2150 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1948{ 1949 1950 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2151 LABEL_CHECK(vplabel, MAGIC_VNODE); 2152 COUNTER_INC(system_check_acct); | 1951 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1952 COUNTER_INC(sysvsem_check_semop); |
2153 2154 return (0); 2155} 2156 | 1953 1954 return (0); 1955} 1956 |
2157COUNTER_DECL(system_check_audit); 2158static int 2159test_system_check_audit(struct ucred *cred, void *record, int length) | 1957COUNTER_DECL(sysvsem_cleanup); 1958static void 1959test_sysvsem_cleanup(struct label *semalabel) |
2160{ 2161 | 1960{ 1961 |
2162 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2163 COUNTER_INC(system_check_audit); | 1962 LABEL_CHECK(semalabel, MAGIC_SYSV_SEM); 1963 COUNTER_INC(sysvsem_cleanup); 1964} |
2164 | 1965 |
2165 return (0); | 1966COUNTER_DECL(sysvsem_create); 1967static void 1968test_sysvsem_create(struct ucred *cred, struct semid_kernel *semakptr, 1969 struct label *semalabel) 1970{ 1971 1972 LABEL_CHECK(semalabel, MAGIC_SYSV_SEM); 1973 COUNTER_INC(sysvsem_create); |
2166} 2167 | 1974} 1975 |
2168COUNTER_DECL(system_check_auditctl); 2169static int 2170test_system_check_auditctl(struct ucred *cred, struct vnode *vp, 2171 struct label *vplabel) | 1976COUNTER_DECL(sysvsem_destroy_label); 1977static void 1978test_sysvsem_destroy_label(struct label *label) |
2172{ 2173 | 1979{ 1980 |
2174 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2175 LABEL_CHECK(vplabel, MAGIC_VNODE); 2176 COUNTER_INC(system_check_auditctl); | 1981 LABEL_DESTROY(label, MAGIC_SYSV_SEM); 1982 COUNTER_INC(sysvsem_destroy_label); 1983} |
2177 | 1984 |
2178 return (0); | 1985COUNTER_DECL(sysvsem_init_label); 1986static void 1987test_sysvsem_init_label(struct label *label) 1988{ 1989 LABEL_INIT(label, MAGIC_SYSV_SEM); 1990 COUNTER_INC(sysvsem_init_label); |
2179} 2180 | 1991} 1992 |
2181COUNTER_DECL(system_check_auditon); | 1993COUNTER_DECL(sysvshm_check_shmat); |
2182static int | 1994static int |
2183test_system_check_auditon(struct ucred *cred, int cmd) | 1995test_sysvshm_check_shmat(struct ucred *cred, 1996 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int shmflg) |
2184{ 2185 2186 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 1997{ 1998 1999 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2187 COUNTER_INC(system_check_auditon); | 2000 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 2001 COUNTER_INC(sysvshm_check_shmat); |
2188 | 2002 |
2189 return (0); | 2003 return (0); |
2190} 2191 | 2004} 2005 |
2192COUNTER_DECL(system_check_reboot); | 2006COUNTER_DECL(sysvshm_check_shmctl); |
2193static int | 2007static int |
2194test_system_check_reboot(struct ucred *cred, int how) | 2008test_sysvshm_check_shmctl(struct ucred *cred, 2009 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int cmd) |
2195{ 2196 2197 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 2010{ 2011 2012 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2198 COUNTER_INC(system_check_reboot); | 2013 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 2014 COUNTER_INC(sysvshm_check_shmctl); |
2199 | 2015 |
2200 return (0); | 2016 return (0); |
2201} 2202 | 2017} 2018 |
2203COUNTER_DECL(system_check_swapoff); | 2019COUNTER_DECL(sysvshm_check_shmdt); |
2204static int | 2020static int |
2205test_system_check_swapoff(struct ucred *cred, struct vnode *vp, 2206 struct label *vplabel) | 2021test_sysvshm_check_shmdt(struct ucred *cred, 2022 struct shmid_kernel *shmsegptr, struct label *shmseglabel) |
2207{ 2208 2209 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 2023{ 2024 2025 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2210 LABEL_CHECK(vplabel, MAGIC_VNODE); 2211 COUNTER_INC(system_check_swapoff); | 2026 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 2027 COUNTER_INC(sysvshm_check_shmdt); |
2212 2213 return (0); 2214} 2215 | 2028 2029 return (0); 2030} 2031 |
2216COUNTER_DECL(system_check_swapon); | 2032COUNTER_DECL(sysvshm_check_shmget); |
2217static int | 2033static int |
2218test_system_check_swapon(struct ucred *cred, struct vnode *vp, 2219 struct label *vplabel) | 2034test_sysvshm_check_shmget(struct ucred *cred, 2035 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int shmflg) |
2220{ 2221 2222 LABEL_CHECK(cred->cr_label, MAGIC_CRED); | 2036{ 2037 2038 LABEL_CHECK(cred->cr_label, MAGIC_CRED); |
2223 LABEL_CHECK(vplabel, MAGIC_VNODE); 2224 COUNTER_INC(system_check_swapon); | 2039 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 2040 COUNTER_INC(sysvshm_check_shmget); |
2225 2226 return (0); 2227} 2228 | 2041 2042 return (0); 2043} 2044 |
2229COUNTER_DECL(system_check_sysctl); | 2045COUNTER_DECL(sysvshm_cleanup); 2046static void 2047test_sysvshm_cleanup(struct label *shmlabel) 2048{ 2049 2050 LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM); 2051 COUNTER_INC(sysvshm_cleanup); 2052} 2053 2054COUNTER_DECL(sysvshm_create); 2055static void 2056test_sysvshm_create(struct ucred *cred, struct shmid_kernel *shmsegptr, 2057 struct label *shmlabel) 2058{ 2059 2060 LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM); 2061 COUNTER_INC(sysvshm_create); 2062} 2063 2064COUNTER_DECL(sysvshm_destroy_label); 2065static void 2066test_sysvshm_destroy_label(struct label *label) 2067{ 2068 2069 LABEL_DESTROY(label, MAGIC_SYSV_SHM); 2070 COUNTER_INC(sysvshm_destroy_label); 2071} 2072 2073COUNTER_DECL(sysvshm_init_label); 2074static void 2075test_sysvshm_init_label(struct label *label) 2076{ 2077 LABEL_INIT(label, MAGIC_SYSV_SHM); 2078 COUNTER_INC(sysvshm_init_label); 2079} 2080 2081COUNTER_DECL(thread_userret); 2082static void 2083test_thread_userret(struct thread *td) 2084{ 2085 2086 COUNTER_INC(thread_userret); 2087} 2088 2089COUNTER_DECL(vnode_associate_extattr); |
2230static int | 2090static int |
2231test_system_check_sysctl(struct ucred *cred, struct sysctl_oid *oidp, 2232 void *arg1, int arg2, struct sysctl_req *req) | 2091test_vnode_associate_extattr(struct mount *mp, struct label *mplabel, 2092 struct vnode *vp, struct label *vplabel) |
2233{ 2234 | 2093{ 2094 |
2235 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2236 COUNTER_INC(system_check_sysctl); | 2095 LABEL_CHECK(mplabel, MAGIC_MOUNT); 2096 LABEL_CHECK(vplabel, MAGIC_VNODE); 2097 COUNTER_INC(vnode_associate_extattr); |
2237 2238 return (0); 2239} 2240 | 2098 2099 return (0); 2100} 2101 |
2102COUNTER_DECL(vnode_associate_singlelabel); 2103static void 2104test_vnode_associate_singlelabel(struct mount *mp, struct label *mplabel, 2105 struct vnode *vp, struct label *vplabel) 2106{ 2107 2108 LABEL_CHECK(mplabel, MAGIC_MOUNT); 2109 LABEL_CHECK(vplabel, MAGIC_VNODE); 2110 COUNTER_INC(vnode_associate_singlelabel); 2111} 2112 |
|
2241COUNTER_DECL(vnode_check_access); 2242static int 2243test_vnode_check_access(struct ucred *cred, struct vnode *vp, 2244 struct label *vplabel, int acc_mode) 2245{ 2246 2247 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2248 LABEL_CHECK(vplabel, MAGIC_VNODE); --- 408 unchanged lines hidden (view full) --- 2657 if (file_cred != NULL) 2658 LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2659 LABEL_CHECK(vplabel, MAGIC_VNODE); 2660 COUNTER_INC(vnode_check_write); 2661 2662 return (0); 2663} 2664 | 2113COUNTER_DECL(vnode_check_access); 2114static int 2115test_vnode_check_access(struct ucred *cred, struct vnode *vp, 2116 struct label *vplabel, int acc_mode) 2117{ 2118 2119 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2120 LABEL_CHECK(vplabel, MAGIC_VNODE); --- 408 unchanged lines hidden (view full) --- 2529 if (file_cred != NULL) 2530 LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2531 LABEL_CHECK(vplabel, MAGIC_VNODE); 2532 COUNTER_INC(vnode_check_write); 2533 2534 return (0); 2535} 2536 |
2537COUNTER_DECL(vnode_copy_label); 2538static void 2539test_vnode_copy_label(struct label *src, struct label *dest) 2540{ 2541 2542 LABEL_CHECK(src, MAGIC_VNODE); 2543 LABEL_CHECK(dest, MAGIC_VNODE); 2544 COUNTER_INC(vnode_copy_label); 2545} 2546 2547COUNTER_DECL(vnode_create_extattr); 2548static int 2549test_vnode_create_extattr(struct ucred *cred, struct mount *mp, 2550 struct label *mplabel, struct vnode *dvp, struct label *dvplabel, 2551 struct vnode *vp, struct label *vplabel, struct componentname *cnp) 2552{ 2553 2554 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2555 LABEL_CHECK(mplabel, MAGIC_MOUNT); 2556 LABEL_CHECK(dvplabel, MAGIC_VNODE); 2557 COUNTER_INC(vnode_create_extattr); 2558 2559 return (0); 2560} 2561 2562COUNTER_DECL(vnode_destroy_label); 2563static void 2564test_vnode_destroy_label(struct label *label) 2565{ 2566 2567 LABEL_DESTROY(label, MAGIC_VNODE); 2568 COUNTER_INC(vnode_destroy_label); 2569} 2570 2571COUNTER_DECL(vnode_execve_transition); 2572static void 2573test_vnode_execve_transition(struct ucred *old, struct ucred *new, 2574 struct vnode *vp, struct label *filelabel, 2575 struct label *interpvplabel, struct image_params *imgp, 2576 struct label *execlabel) 2577{ 2578 2579 LABEL_CHECK(old->cr_label, MAGIC_CRED); 2580 LABEL_CHECK(new->cr_label, MAGIC_CRED); 2581 LABEL_CHECK(filelabel, MAGIC_VNODE); 2582 LABEL_CHECK(interpvplabel, MAGIC_VNODE); 2583 LABEL_CHECK(execlabel, MAGIC_CRED); 2584 COUNTER_INC(vnode_execve_transition); 2585} 2586 2587COUNTER_DECL(vnode_execve_will_transition); 2588static int 2589test_vnode_execve_will_transition(struct ucred *old, struct vnode *vp, 2590 struct label *filelabel, struct label *interpvplabel, 2591 struct image_params *imgp, struct label *execlabel) 2592{ 2593 2594 LABEL_CHECK(old->cr_label, MAGIC_CRED); 2595 LABEL_CHECK(filelabel, MAGIC_VNODE); 2596 LABEL_CHECK(interpvplabel, MAGIC_VNODE); 2597 LABEL_CHECK(execlabel, MAGIC_CRED); 2598 COUNTER_INC(vnode_execve_will_transition); 2599 2600 return (0); 2601} 2602 2603COUNTER_DECL(vnode_externalize_label); 2604static int 2605test_vnode_externalize_label(struct label *label, char *element_name, 2606 struct sbuf *sb, int *claimed) 2607{ 2608 2609 LABEL_CHECK(label, MAGIC_VNODE); 2610 COUNTER_INC(vnode_externalize_label); 2611 2612 return (0); 2613} 2614 2615COUNTER_DECL(vnode_init_label); 2616static void 2617test_vnode_init_label(struct label *label) 2618{ 2619 2620 LABEL_INIT(label, MAGIC_VNODE); 2621 COUNTER_INC(vnode_init_label); 2622} 2623 2624COUNTER_DECL(vnode_relabel); 2625static void 2626test_vnode_relabel(struct ucred *cred, struct vnode *vp, 2627 struct label *vplabel, struct label *label) 2628{ 2629 2630 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2631 LABEL_CHECK(vplabel, MAGIC_VNODE); 2632 LABEL_CHECK(label, MAGIC_VNODE); 2633 COUNTER_INC(vnode_relabel); 2634} 2635 2636COUNTER_DECL(vnode_setlabel_extattr); 2637static int 2638test_vnode_setlabel_extattr(struct ucred *cred, struct vnode *vp, 2639 struct label *vplabel, struct label *intlabel) 2640{ 2641 2642 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2643 LABEL_CHECK(vplabel, MAGIC_VNODE); 2644 LABEL_CHECK(intlabel, MAGIC_VNODE); 2645 COUNTER_INC(vnode_setlabel_extattr); 2646 2647 return (0); 2648} 2649 |
|
2665static struct mac_policy_ops test_ops = 2666{ | 2650static struct mac_policy_ops test_ops = 2651{ |
2667 .mpo_bpfdesc_init_label = test_bpfdesc_init_label, 2668 .mpo_cred_init_label = test_cred_init_label, 2669 .mpo_devfs_init_label = test_devfs_init_label, 2670 .mpo_ifnet_init_label = test_ifnet_init_label, 2671 .mpo_syncache_init_label = test_syncache_init_label, 2672 .mpo_sysvmsg_init_label = test_sysvmsg_init_label, 2673 .mpo_sysvmsq_init_label = test_sysvmsq_init_label, 2674 .mpo_sysvsem_init_label = test_sysvsem_init_label, 2675 .mpo_sysvshm_init_label = test_sysvshm_init_label, 2676 .mpo_inpcb_init_label = test_inpcb_init_label, 2677 .mpo_ipq_init_label = test_ipq_init_label, 2678 .mpo_mbuf_init_label = test_mbuf_init_label, 2679 .mpo_mount_init_label = test_mount_init_label, 2680 .mpo_pipe_init_label = test_pipe_init_label, 2681 .mpo_posixsem_init_label = test_posixsem_init_label, 2682 .mpo_proc_init_label = test_proc_init_label, 2683 .mpo_socket_init_label = test_socket_init_label, 2684 .mpo_socketpeer_init_label = test_socketpeer_init_label, 2685 .mpo_vnode_init_label = test_vnode_init_label, | 2652 .mpo_bpfdesc_check_receive = test_bpfdesc_check_receive, 2653 .mpo_bpfdesc_create = test_bpfdesc_create, 2654 .mpo_bpfdesc_create_mbuf = test_bpfdesc_create_mbuf, |
2686 .mpo_bpfdesc_destroy_label = test_bpfdesc_destroy_label, | 2655 .mpo_bpfdesc_destroy_label = test_bpfdesc_destroy_label, |
2687 .mpo_cred_destroy_label = test_cred_destroy_label, 2688 .mpo_devfs_destroy_label = test_devfs_destroy_label, 2689 .mpo_ifnet_destroy_label = test_ifnet_destroy_label, 2690 .mpo_syncache_destroy_label = test_syncache_destroy_label, 2691 .mpo_sysvmsg_destroy_label = test_sysvmsg_destroy_label, 2692 .mpo_sysvmsq_destroy_label = 2693 test_sysvmsq_destroy_label, 2694 .mpo_sysvsem_destroy_label = test_sysvsem_destroy_label, 2695 .mpo_sysvshm_destroy_label = test_sysvshm_destroy_label, 2696 .mpo_inpcb_destroy_label = test_inpcb_destroy_label, 2697 .mpo_ipq_destroy_label = test_ipq_destroy_label, 2698 .mpo_mbuf_destroy_label = test_mbuf_destroy_label, 2699 .mpo_mount_destroy_label = test_mount_destroy_label, 2700 .mpo_pipe_destroy_label = test_pipe_destroy_label, 2701 .mpo_posixsem_destroy_label = test_posixsem_destroy_label, 2702 .mpo_proc_destroy_label = test_proc_destroy_label, 2703 .mpo_socket_destroy_label = test_socket_destroy_label, 2704 .mpo_socketpeer_destroy_label = test_socketpeer_destroy_label, 2705 .mpo_vnode_destroy_label = test_vnode_destroy_label, | 2656 .mpo_bpfdesc_init_label = test_bpfdesc_init_label, 2657 2658 .mpo_cred_check_relabel = test_cred_check_relabel, 2659 .mpo_cred_check_visible = test_cred_check_visible, |
2706 .mpo_cred_copy_label = test_cred_copy_label, | 2660 .mpo_cred_copy_label = test_cred_copy_label, |
2707 .mpo_ifnet_copy_label = test_ifnet_copy_label, 2708 .mpo_mbuf_copy_label = test_mbuf_copy_label, 2709 .mpo_pipe_copy_label = test_pipe_copy_label, 2710 .mpo_socket_copy_label = test_socket_copy_label, 2711 .mpo_vnode_copy_label = test_vnode_copy_label, | 2661 .mpo_cred_destroy_label = test_cred_destroy_label, |
2712 .mpo_cred_externalize_label = test_cred_externalize_label, | 2662 .mpo_cred_externalize_label = test_cred_externalize_label, |
2713 .mpo_ifnet_externalize_label = test_ifnet_externalize_label, 2714 .mpo_pipe_externalize_label = test_pipe_externalize_label, 2715 .mpo_socket_externalize_label = test_socket_externalize_label, 2716 .mpo_socketpeer_externalize_label = test_socketpeer_externalize_label, 2717 .mpo_vnode_externalize_label = test_vnode_externalize_label, | 2663 .mpo_cred_init_label = test_cred_init_label, |
2718 .mpo_cred_internalize_label = test_internalize_label, | 2664 .mpo_cred_internalize_label = test_internalize_label, |
2719 .mpo_ifnet_internalize_label = test_internalize_label, 2720 .mpo_pipe_internalize_label = test_internalize_label, 2721 .mpo_socket_internalize_label = test_internalize_label, 2722 .mpo_vnode_internalize_label = test_internalize_label, 2723 .mpo_devfs_vnode_associate = test_devfs_vnode_associate, 2724 .mpo_vnode_associate_extattr = test_vnode_associate_extattr, 2725 .mpo_vnode_associate_singlelabel = test_vnode_associate_singlelabel, | 2665 .mpo_cred_relabel = test_cred_relabel, 2666 |
2726 .mpo_devfs_create_device = test_devfs_create_device, 2727 .mpo_devfs_create_directory = test_devfs_create_directory, 2728 .mpo_devfs_create_symlink = test_devfs_create_symlink, | 2667 .mpo_devfs_create_device = test_devfs_create_device, 2668 .mpo_devfs_create_directory = test_devfs_create_directory, 2669 .mpo_devfs_create_symlink = test_devfs_create_symlink, |
2729 .mpo_vnode_create_extattr = test_vnode_create_extattr, 2730 .mpo_mount_create = test_mount_create, 2731 .mpo_vnode_relabel = test_vnode_relabel, 2732 .mpo_vnode_setlabel_extattr = test_vnode_setlabel_extattr, | 2670 .mpo_devfs_destroy_label = test_devfs_destroy_label, 2671 .mpo_devfs_init_label = test_devfs_init_label, |
2733 .mpo_devfs_update = test_devfs_update, | 2672 .mpo_devfs_update = test_devfs_update, |
2734 .mpo_socket_create_mbuf = test_socket_create_mbuf, 2735 .mpo_pipe_create = test_pipe_create, 2736 .mpo_posixsem_create = test_posixsem_create, 2737 .mpo_socket_create = test_socket_create, 2738 .mpo_socket_newconn = test_socket_newconn, 2739 .mpo_pipe_relabel = test_pipe_relabel, 2740 .mpo_socket_relabel = test_socket_relabel, 2741 .mpo_socketpeer_set_from_mbuf = test_socketpeer_set_from_mbuf, 2742 .mpo_socketpeer_set_from_socket = test_socketpeer_set_from_socket, 2743 .mpo_bpfdesc_create = test_bpfdesc_create, | 2673 .mpo_devfs_vnode_associate = test_devfs_vnode_associate, 2674 2675 .mpo_ifnet_check_relabel = test_ifnet_check_relabel, 2676 .mpo_ifnet_check_transmit = test_ifnet_check_transmit, 2677 .mpo_ifnet_copy_label = test_ifnet_copy_label, |
2744 .mpo_ifnet_create = test_ifnet_create, | 2678 .mpo_ifnet_create = test_ifnet_create, |
2679 .mpo_ifnet_create_mbuf = test_ifnet_create_mbuf, 2680 .mpo_ifnet_destroy_label = test_ifnet_destroy_label, 2681 .mpo_ifnet_externalize_label = test_ifnet_externalize_label, 2682 .mpo_ifnet_init_label = test_ifnet_init_label, 2683 .mpo_ifnet_internalize_label = test_internalize_label, 2684 .mpo_ifnet_relabel = test_ifnet_relabel, 2685 2686 .mpo_syncache_destroy_label = test_syncache_destroy_label, 2687 .mpo_syncache_init_label = test_syncache_init_label, 2688 2689 .mpo_sysvmsg_destroy_label = test_sysvmsg_destroy_label, 2690 .mpo_sysvmsg_init_label = test_sysvmsg_init_label, 2691 2692 .mpo_sysvmsq_destroy_label = test_sysvmsq_destroy_label, 2693 .mpo_sysvmsq_init_label = test_sysvmsq_init_label, 2694 2695 .mpo_sysvsem_destroy_label = test_sysvsem_destroy_label, 2696 .mpo_sysvsem_init_label = test_sysvsem_init_label, 2697 2698 .mpo_sysvshm_destroy_label = test_sysvshm_destroy_label, 2699 .mpo_sysvshm_init_label = test_sysvshm_init_label, 2700 2701 .mpo_inpcb_check_deliver = test_inpcb_check_deliver, |
|
2745 .mpo_inpcb_create = test_inpcb_create, | 2702 .mpo_inpcb_create = test_inpcb_create, |
2746 .mpo_syncache_create = test_syncache_create, 2747 .mpo_syncache_create_mbuf = test_syncache_create_mbuf, 2748 .mpo_sysvmsg_create = test_sysvmsg_create, 2749 .mpo_sysvmsq_create = test_sysvmsq_create, 2750 .mpo_sysvsem_create = test_sysvsem_create, 2751 .mpo_sysvshm_create = test_sysvshm_create, 2752 .mpo_ipq_reassemble = test_ipq_reassemble, 2753 .mpo_netinet_fragment = test_netinet_fragment, 2754 .mpo_ipq_create = test_ipq_create, | |
2755 .mpo_inpcb_create_mbuf = test_inpcb_create_mbuf, | 2703 .mpo_inpcb_create_mbuf = test_inpcb_create_mbuf, |
2756 .mpo_bpfdesc_create_mbuf = test_bpfdesc_create_mbuf, 2757 .mpo_ifnet_create_mbuf = test_ifnet_create_mbuf, | 2704 .mpo_inpcb_destroy_label = test_inpcb_destroy_label, 2705 .mpo_inpcb_init_label = test_inpcb_init_label, 2706 .mpo_inpcb_sosetlabel = test_inpcb_sosetlabel, 2707 2708 .mpo_ipq_create = test_ipq_create, 2709 .mpo_ipq_destroy_label = test_ipq_destroy_label, 2710 .mpo_ipq_init_label = test_ipq_init_label, |
2758 .mpo_ipq_match = test_ipq_match, | 2711 .mpo_ipq_match = test_ipq_match, |
2759 .mpo_netatalk_aarp_send = test_netatalk_aarp_send, 2760 .mpo_netinet_arp_send = test_netinet_arp_send, 2761 .mpo_netinet_icmp_reply = test_netinet_icmp_reply, 2762 .mpo_netinet_icmp_replyinplace = test_netinet_icmp_replyinplace, 2763 .mpo_netinet_igmp_send = test_netinet_igmp_send, 2764 .mpo_netinet_tcp_reply = test_netinet_tcp_reply, 2765 .mpo_netinet6_nd6_send = test_netinet6_nd6_send, 2766 .mpo_ifnet_relabel = test_ifnet_relabel, | 2712 .mpo_ipq_reassemble = test_ipq_reassemble, |
2767 .mpo_ipq_update = test_ipq_update, | 2713 .mpo_ipq_update = test_ipq_update, |
2768 .mpo_inpcb_sosetlabel = test_inpcb_sosetlabel, 2769 .mpo_vnode_execve_transition = test_vnode_execve_transition, 2770 .mpo_vnode_execve_will_transition = 2771 test_vnode_execve_will_transition, 2772 .mpo_proc_create_swapper = test_proc_create_swapper, 2773 .mpo_proc_create_init = test_proc_create_init, 2774 .mpo_cred_relabel = test_cred_relabel, 2775 .mpo_thread_userret = test_thread_userret, 2776 .mpo_sysvmsg_cleanup = test_sysvmsg_cleanup, 2777 .mpo_sysvmsq_cleanup = test_sysvmsq_cleanup, 2778 .mpo_sysvsem_cleanup = test_sysvsem_cleanup, 2779 .mpo_sysvshm_cleanup = test_sysvshm_cleanup, 2780 .mpo_bpfdesc_check_receive = test_bpfdesc_check_receive, 2781 .mpo_cred_check_relabel = test_cred_check_relabel, 2782 .mpo_cred_check_visible = test_cred_check_visible, 2783 .mpo_ifnet_check_relabel = test_ifnet_check_relabel, 2784 .mpo_ifnet_check_transmit = test_ifnet_check_transmit, 2785 .mpo_inpcb_check_deliver = test_inpcb_check_deliver, 2786 .mpo_sysvmsq_check_msgmsq = test_sysvmsq_check_msgmsq, 2787 .mpo_sysvmsq_check_msgrcv = test_sysvmsq_check_msgrcv, 2788 .mpo_sysvmsq_check_msgrmid = test_sysvmsq_check_msgrmid, 2789 .mpo_sysvmsq_check_msqget = test_sysvmsq_check_msqget, 2790 .mpo_sysvmsq_check_msqsnd = test_sysvmsq_check_msqsnd, 2791 .mpo_sysvmsq_check_msqrcv = test_sysvmsq_check_msqrcv, 2792 .mpo_sysvmsq_check_msqctl = test_sysvmsq_check_msqctl, 2793 .mpo_sysvsem_check_semctl = test_sysvsem_check_semctl, 2794 .mpo_sysvsem_check_semget = test_sysvsem_check_semget, 2795 .mpo_sysvsem_check_semop = test_sysvsem_check_semop, 2796 .mpo_sysvshm_check_shmat = test_sysvshm_check_shmat, 2797 .mpo_sysvshm_check_shmctl = test_sysvshm_check_shmctl, 2798 .mpo_sysvshm_check_shmdt = test_sysvshm_check_shmdt, 2799 .mpo_sysvshm_check_shmget = test_sysvshm_check_shmget, | 2714 |
2800 .mpo_kenv_check_dump = test_kenv_check_dump, 2801 .mpo_kenv_check_get = test_kenv_check_get, 2802 .mpo_kenv_check_set = test_kenv_check_set, 2803 .mpo_kenv_check_unset = test_kenv_check_unset, | 2715 .mpo_kenv_check_dump = test_kenv_check_dump, 2716 .mpo_kenv_check_get = test_kenv_check_get, 2717 .mpo_kenv_check_set = test_kenv_check_set, 2718 .mpo_kenv_check_unset = test_kenv_check_unset, |
2719 |
|
2804 .mpo_kld_check_load = test_kld_check_load, 2805 .mpo_kld_check_stat = test_kld_check_stat, | 2720 .mpo_kld_check_load = test_kld_check_load, 2721 .mpo_kld_check_stat = test_kld_check_stat, |
2722 2723 .mpo_mbuf_copy_label = test_mbuf_copy_label, 2724 .mpo_mbuf_destroy_label = test_mbuf_destroy_label, 2725 .mpo_mbuf_init_label = test_mbuf_init_label, 2726 |
|
2806 .mpo_mount_check_stat = test_mount_check_stat, | 2727 .mpo_mount_check_stat = test_mount_check_stat, |
2728 .mpo_mount_create = test_mount_create, 2729 .mpo_mount_destroy_label = test_mount_destroy_label, 2730 .mpo_mount_init_label = test_mount_init_label, 2731 2732 .mpo_netatalk_aarp_send = test_netatalk_aarp_send, 2733 2734 .mpo_netinet_arp_send = test_netinet_arp_send, 2735 .mpo_netinet_fragment = test_netinet_fragment, 2736 .mpo_netinet_icmp_reply = test_netinet_icmp_reply, 2737 .mpo_netinet_icmp_replyinplace = test_netinet_icmp_replyinplace, 2738 .mpo_netinet_igmp_send = test_netinet_igmp_send, 2739 .mpo_netinet_tcp_reply = test_netinet_tcp_reply, 2740 2741 .mpo_netinet6_nd6_send = test_netinet6_nd6_send, 2742 |
|
2807 .mpo_pipe_check_ioctl = test_pipe_check_ioctl, 2808 .mpo_pipe_check_poll = test_pipe_check_poll, 2809 .mpo_pipe_check_read = test_pipe_check_read, 2810 .mpo_pipe_check_relabel = test_pipe_check_relabel, 2811 .mpo_pipe_check_stat = test_pipe_check_stat, 2812 .mpo_pipe_check_write = test_pipe_check_write, | 2743 .mpo_pipe_check_ioctl = test_pipe_check_ioctl, 2744 .mpo_pipe_check_poll = test_pipe_check_poll, 2745 .mpo_pipe_check_read = test_pipe_check_read, 2746 .mpo_pipe_check_relabel = test_pipe_check_relabel, 2747 .mpo_pipe_check_stat = test_pipe_check_stat, 2748 .mpo_pipe_check_write = test_pipe_check_write, |
2749 .mpo_pipe_copy_label = test_pipe_copy_label, 2750 .mpo_pipe_create = test_pipe_create, 2751 .mpo_pipe_destroy_label = test_pipe_destroy_label, 2752 .mpo_pipe_externalize_label = test_pipe_externalize_label, 2753 .mpo_pipe_init_label = test_pipe_init_label, 2754 .mpo_pipe_internalize_label = test_internalize_label, 2755 .mpo_pipe_relabel = test_pipe_relabel, 2756 |
|
2813 .mpo_posixsem_check_destroy = test_posixsem_check_destroy, 2814 .mpo_posixsem_check_getvalue = test_posixsem_check_getvalue, 2815 .mpo_posixsem_check_open = test_posixsem_check_open, 2816 .mpo_posixsem_check_post = test_posixsem_check_post, 2817 .mpo_posixsem_check_unlink = test_posixsem_check_unlink, 2818 .mpo_posixsem_check_wait = test_posixsem_check_wait, | 2757 .mpo_posixsem_check_destroy = test_posixsem_check_destroy, 2758 .mpo_posixsem_check_getvalue = test_posixsem_check_getvalue, 2759 .mpo_posixsem_check_open = test_posixsem_check_open, 2760 .mpo_posixsem_check_post = test_posixsem_check_post, 2761 .mpo_posixsem_check_unlink = test_posixsem_check_unlink, 2762 .mpo_posixsem_check_wait = test_posixsem_check_wait, |
2763 .mpo_posixsem_create = test_posixsem_create, 2764 .mpo_posixsem_destroy_label = test_posixsem_destroy_label, 2765 .mpo_posixsem_init_label = test_posixsem_init_label, 2766 |
|
2819 .mpo_proc_check_debug = test_proc_check_debug, 2820 .mpo_proc_check_sched = test_proc_check_sched, 2821 .mpo_proc_check_setaudit = test_proc_check_setaudit, 2822 .mpo_proc_check_setaudit_addr = test_proc_check_setaudit_addr, 2823 .mpo_proc_check_setauid = test_proc_check_setauid, | 2767 .mpo_proc_check_debug = test_proc_check_debug, 2768 .mpo_proc_check_sched = test_proc_check_sched, 2769 .mpo_proc_check_setaudit = test_proc_check_setaudit, 2770 .mpo_proc_check_setaudit_addr = test_proc_check_setaudit_addr, 2771 .mpo_proc_check_setauid = test_proc_check_setauid, |
2824 .mpo_proc_check_setuid = test_proc_check_setuid, | |
2825 .mpo_proc_check_seteuid = test_proc_check_seteuid, | 2772 .mpo_proc_check_seteuid = test_proc_check_seteuid, |
2826 .mpo_proc_check_setgid = test_proc_check_setgid, | |
2827 .mpo_proc_check_setegid = test_proc_check_setegid, | 2773 .mpo_proc_check_setegid = test_proc_check_setegid, |
2774 .mpo_proc_check_setgid = test_proc_check_setgid, |
|
2828 .mpo_proc_check_setgroups = test_proc_check_setgroups, | 2775 .mpo_proc_check_setgroups = test_proc_check_setgroups, |
2829 .mpo_proc_check_setreuid = test_proc_check_setreuid, | |
2830 .mpo_proc_check_setregid = test_proc_check_setregid, | 2776 .mpo_proc_check_setregid = test_proc_check_setregid, |
2831 .mpo_proc_check_setresuid = test_proc_check_setresuid, | |
2832 .mpo_proc_check_setresgid = test_proc_check_setresgid, | 2777 .mpo_proc_check_setresgid = test_proc_check_setresgid, |
2778 .mpo_proc_check_setresuid = test_proc_check_setresuid, 2779 .mpo_proc_check_setreuid = test_proc_check_setreuid, 2780 .mpo_proc_check_setuid = test_proc_check_setuid, |
|
2833 .mpo_proc_check_signal = test_proc_check_signal, 2834 .mpo_proc_check_wait = test_proc_check_wait, | 2781 .mpo_proc_check_signal = test_proc_check_signal, 2782 .mpo_proc_check_wait = test_proc_check_wait, |
2783 .mpo_proc_create_init = test_proc_create_init, 2784 .mpo_proc_create_swapper = test_proc_create_swapper, 2785 .mpo_proc_destroy_label = test_proc_destroy_label, 2786 .mpo_proc_init_label = test_proc_init_label, 2787 |
|
2835 .mpo_socket_check_accept = test_socket_check_accept, 2836 .mpo_socket_check_bind = test_socket_check_bind, 2837 .mpo_socket_check_connect = test_socket_check_connect, 2838 .mpo_socket_check_deliver = test_socket_check_deliver, 2839 .mpo_socket_check_listen = test_socket_check_listen, 2840 .mpo_socket_check_poll = test_socket_check_poll, 2841 .mpo_socket_check_receive = test_socket_check_receive, 2842 .mpo_socket_check_relabel = test_socket_check_relabel, 2843 .mpo_socket_check_send = test_socket_check_send, 2844 .mpo_socket_check_stat = test_socket_check_stat, 2845 .mpo_socket_check_visible = test_socket_check_visible, | 2788 .mpo_socket_check_accept = test_socket_check_accept, 2789 .mpo_socket_check_bind = test_socket_check_bind, 2790 .mpo_socket_check_connect = test_socket_check_connect, 2791 .mpo_socket_check_deliver = test_socket_check_deliver, 2792 .mpo_socket_check_listen = test_socket_check_listen, 2793 .mpo_socket_check_poll = test_socket_check_poll, 2794 .mpo_socket_check_receive = test_socket_check_receive, 2795 .mpo_socket_check_relabel = test_socket_check_relabel, 2796 .mpo_socket_check_send = test_socket_check_send, 2797 .mpo_socket_check_stat = test_socket_check_stat, 2798 .mpo_socket_check_visible = test_socket_check_visible, |
2799 .mpo_socket_copy_label = test_socket_copy_label, 2800 .mpo_socket_create = test_socket_create, 2801 .mpo_socket_create_mbuf = test_socket_create_mbuf, 2802 .mpo_socket_destroy_label = test_socket_destroy_label, 2803 .mpo_socket_externalize_label = test_socket_externalize_label, 2804 .mpo_socket_init_label = test_socket_init_label, 2805 .mpo_socket_internalize_label = test_internalize_label, 2806 .mpo_socket_newconn = test_socket_newconn, 2807 .mpo_socket_relabel = test_socket_relabel, 2808 2809 .mpo_socketpeer_destroy_label = test_socketpeer_destroy_label, 2810 .mpo_socketpeer_externalize_label = test_socketpeer_externalize_label, 2811 .mpo_socketpeer_init_label = test_socketpeer_init_label, 2812 .mpo_socketpeer_set_from_mbuf = test_socketpeer_set_from_mbuf, 2813 .mpo_socketpeer_set_from_socket = test_socketpeer_set_from_socket, 2814 2815 .mpo_syncache_create = test_syncache_create, 2816 .mpo_syncache_create_mbuf = test_syncache_create_mbuf, 2817 |
|
2846 .mpo_system_check_acct = test_system_check_acct, 2847 .mpo_system_check_audit = test_system_check_audit, 2848 .mpo_system_check_auditctl = test_system_check_auditctl, 2849 .mpo_system_check_auditon = test_system_check_auditon, 2850 .mpo_system_check_reboot = test_system_check_reboot, 2851 .mpo_system_check_swapoff = test_system_check_swapoff, 2852 .mpo_system_check_swapon = test_system_check_swapon, 2853 .mpo_system_check_sysctl = test_system_check_sysctl, | 2818 .mpo_system_check_acct = test_system_check_acct, 2819 .mpo_system_check_audit = test_system_check_audit, 2820 .mpo_system_check_auditctl = test_system_check_auditctl, 2821 .mpo_system_check_auditon = test_system_check_auditon, 2822 .mpo_system_check_reboot = test_system_check_reboot, 2823 .mpo_system_check_swapoff = test_system_check_swapoff, 2824 .mpo_system_check_swapon = test_system_check_swapon, 2825 .mpo_system_check_sysctl = test_system_check_sysctl, |
2826 |
|
2854 .mpo_vnode_check_access = test_vnode_check_access, | 2827 .mpo_vnode_check_access = test_vnode_check_access, |
2828 .mpo_sysvmsg_cleanup = test_sysvmsg_cleanup, 2829 .mpo_sysvmsg_create = test_sysvmsg_create, 2830 2831 .mpo_sysvmsq_check_msgmsq = test_sysvmsq_check_msgmsq, 2832 .mpo_sysvmsq_check_msgrcv = test_sysvmsq_check_msgrcv, 2833 .mpo_sysvmsq_check_msgrmid = test_sysvmsq_check_msgrmid, 2834 .mpo_sysvmsq_check_msqget = test_sysvmsq_check_msqget, 2835 .mpo_sysvmsq_check_msqsnd = test_sysvmsq_check_msqsnd, 2836 .mpo_sysvmsq_check_msqrcv = test_sysvmsq_check_msqrcv, 2837 .mpo_sysvmsq_check_msqctl = test_sysvmsq_check_msqctl, 2838 .mpo_sysvmsq_cleanup = test_sysvmsq_cleanup, 2839 .mpo_sysvmsq_create = test_sysvmsq_create, 2840 2841 .mpo_sysvsem_check_semctl = test_sysvsem_check_semctl, 2842 .mpo_sysvsem_check_semget = test_sysvsem_check_semget, 2843 .mpo_sysvsem_check_semop = test_sysvsem_check_semop, 2844 .mpo_sysvsem_cleanup = test_sysvsem_cleanup, 2845 .mpo_sysvsem_create = test_sysvsem_create, 2846 2847 .mpo_sysvshm_check_shmat = test_sysvshm_check_shmat, 2848 .mpo_sysvshm_check_shmctl = test_sysvshm_check_shmctl, 2849 .mpo_sysvshm_check_shmdt = test_sysvshm_check_shmdt, 2850 .mpo_sysvshm_check_shmget = test_sysvshm_check_shmget, 2851 .mpo_sysvshm_cleanup = test_sysvshm_cleanup, 2852 .mpo_sysvshm_create = test_sysvshm_create, 2853 2854 .mpo_thread_userret = test_thread_userret, 2855 2856 .mpo_vnode_associate_extattr = test_vnode_associate_extattr, 2857 .mpo_vnode_associate_singlelabel = test_vnode_associate_singlelabel, |
|
2855 .mpo_vnode_check_chdir = test_vnode_check_chdir, 2856 .mpo_vnode_check_chroot = test_vnode_check_chroot, 2857 .mpo_vnode_check_create = test_vnode_check_create, 2858 .mpo_vnode_check_deleteacl = test_vnode_check_deleteacl, 2859 .mpo_vnode_check_deleteextattr = test_vnode_check_deleteextattr, 2860 .mpo_vnode_check_exec = test_vnode_check_exec, 2861 .mpo_vnode_check_getacl = test_vnode_check_getacl, 2862 .mpo_vnode_check_getextattr = test_vnode_check_getextattr, --- 14 unchanged lines hidden (view full) --- 2877 .mpo_vnode_check_setextattr = test_vnode_check_setextattr, 2878 .mpo_vnode_check_setflags = test_vnode_check_setflags, 2879 .mpo_vnode_check_setmode = test_vnode_check_setmode, 2880 .mpo_vnode_check_setowner = test_vnode_check_setowner, 2881 .mpo_vnode_check_setutimes = test_vnode_check_setutimes, 2882 .mpo_vnode_check_stat = test_vnode_check_stat, 2883 .mpo_vnode_check_unlink = test_vnode_check_unlink, 2884 .mpo_vnode_check_write = test_vnode_check_write, | 2858 .mpo_vnode_check_chdir = test_vnode_check_chdir, 2859 .mpo_vnode_check_chroot = test_vnode_check_chroot, 2860 .mpo_vnode_check_create = test_vnode_check_create, 2861 .mpo_vnode_check_deleteacl = test_vnode_check_deleteacl, 2862 .mpo_vnode_check_deleteextattr = test_vnode_check_deleteextattr, 2863 .mpo_vnode_check_exec = test_vnode_check_exec, 2864 .mpo_vnode_check_getacl = test_vnode_check_getacl, 2865 .mpo_vnode_check_getextattr = test_vnode_check_getextattr, --- 14 unchanged lines hidden (view full) --- 2880 .mpo_vnode_check_setextattr = test_vnode_check_setextattr, 2881 .mpo_vnode_check_setflags = test_vnode_check_setflags, 2882 .mpo_vnode_check_setmode = test_vnode_check_setmode, 2883 .mpo_vnode_check_setowner = test_vnode_check_setowner, 2884 .mpo_vnode_check_setutimes = test_vnode_check_setutimes, 2885 .mpo_vnode_check_stat = test_vnode_check_stat, 2886 .mpo_vnode_check_unlink = test_vnode_check_unlink, 2887 .mpo_vnode_check_write = test_vnode_check_write, |
2888 .mpo_vnode_copy_label = test_vnode_copy_label, 2889 .mpo_vnode_create_extattr = test_vnode_create_extattr, 2890 .mpo_vnode_destroy_label = test_vnode_destroy_label, 2891 .mpo_vnode_execve_transition = test_vnode_execve_transition, 2892 .mpo_vnode_execve_will_transition = test_vnode_execve_will_transition, 2893 .mpo_vnode_externalize_label = test_vnode_externalize_label, 2894 .mpo_vnode_init_label = test_vnode_init_label, 2895 .mpo_vnode_internalize_label = test_internalize_label, 2896 .mpo_vnode_relabel = test_vnode_relabel, 2897 .mpo_vnode_setlabel_extattr = test_vnode_setlabel_extattr, |
|
2885}; 2886 2887MAC_POLICY_SET(&test_ops, mac_test, "TrustedBSD MAC/Test", 2888 MPC_LOADTIME_FLAG_UNLOADOK | MPC_LOADTIME_FLAG_LABELMBUFS, &test_slot); | 2898}; 2899 2900MAC_POLICY_SET(&test_ops, mac_test, "TrustedBSD MAC/Test", 2901 MPC_LOADTIME_FLAG_UNLOADOK | MPC_LOADTIME_FLAG_LABELMBUFS, &test_slot); |