ugidfw_system.c (135039) | ugidfw_system.c (136739) |
---|---|
1/*- 2 * Copyright (c) 1999-2002 Robert N. M. Watson 3 * Copyright (c) 2001-2003 Networks Associates Technology, Inc. 4 * All rights reserved. 5 * 6 * This software was developed by Robert Watson for the TrustedBSD Project. 7 * 8 * This software was developed for the FreeBSD Project in part by Network --- 17 unchanged lines hidden (view full) --- 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * | 1/*- 2 * Copyright (c) 1999-2002 Robert N. M. Watson 3 * Copyright (c) 2001-2003 Networks Associates Technology, Inc. 4 * All rights reserved. 5 * 6 * This software was developed by Robert Watson for the TrustedBSD Project. 7 * 8 * This software was developed for the FreeBSD Project in part by Network --- 17 unchanged lines hidden (view full) --- 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * |
34 * $FreeBSD: head/sys/security/mac_bsdextended/mac_bsdextended.c 135039 2004-09-10 15:14:50Z trhodes $ | 34 * $FreeBSD: head/sys/security/mac_bsdextended/mac_bsdextended.c 136739 2004-10-21 11:19:02Z rwatson $ |
35 */ 36/* 37 * Developed by the TrustedBSD Project. 38 * "BSD Extended" MAC policy, allowing the administrator to impose 39 * mandatory rules regarding users and some system objects. 40 * 41 * XXX: Much locking support required here. 42 */ --- 74 unchanged lines hidden (view full) --- 117{ 118 119 if ((rule->mbr_subject.mbi_flags | MBI_BITS) != MBI_BITS) 120 return (EINVAL); 121 122 if ((rule->mbr_object.mbi_flags | MBI_BITS) != MBI_BITS) 123 return (EINVAL); 124 | 35 */ 36/* 37 * Developed by the TrustedBSD Project. 38 * "BSD Extended" MAC policy, allowing the administrator to impose 39 * mandatory rules regarding users and some system objects. 40 * 41 * XXX: Much locking support required here. 42 */ --- 74 unchanged lines hidden (view full) --- 117{ 118 119 if ((rule->mbr_subject.mbi_flags | MBI_BITS) != MBI_BITS) 120 return (EINVAL); 121 122 if ((rule->mbr_object.mbi_flags | MBI_BITS) != MBI_BITS) 123 return (EINVAL); 124 |
125 if ((rule->mbr_mode | VALLPERM) != VALLPERM) | 125 if ((rule->mbr_mode | MBI_ALLPERM) != MBI_ALLPERM) |
126 return (EINVAL); 127 128 return (0); 129} 130 131static int 132sysctl_rule(SYSCTL_HANDLER_ARGS) 133{ --- 169 unchanged lines hidden (view full) --- 303 for (i = 0; i < rule_slots; i++) { 304 if (rules[i] == NULL) 305 continue; 306 307 /* 308 * Since we don't separately handle append, map append to 309 * write. 310 */ | 126 return (EINVAL); 127 128 return (0); 129} 130 131static int 132sysctl_rule(SYSCTL_HANDLER_ARGS) 133{ --- 169 unchanged lines hidden (view full) --- 303 for (i = 0; i < rule_slots; i++) { 304 if (rules[i] == NULL) 305 continue; 306 307 /* 308 * Since we don't separately handle append, map append to 309 * write. 310 */ |
311 if (acc_mode & VAPPEND) { 312 acc_mode &= ~VAPPEND; 313 acc_mode |= VWRITE; | 311 if (acc_mode & MBI_APPEND) { 312 acc_mode &= ~MBI_APPEND; 313 acc_mode |= MBI_WRITE; |
314 } 315 316 error = mac_bsdextended_rulecheck(rules[i], cred, object_uid, 317 object_gid, acc_mode); 318 if (error == EJUSTRETURN) 319 break; 320 if (error) 321 return (error); --- 10 unchanged lines hidden (view full) --- 332 int error; 333 334 if (!mac_bsdextended_enabled) 335 return (0); 336 337 error = VOP_GETATTR(vp, &vap, cred, curthread); 338 if (error) 339 return (error); | 314 } 315 316 error = mac_bsdextended_rulecheck(rules[i], cred, object_uid, 317 object_gid, acc_mode); 318 if (error == EJUSTRETURN) 319 break; 320 if (error) 321 return (error); --- 10 unchanged lines hidden (view full) --- 332 int error; 333 334 if (!mac_bsdextended_enabled) 335 return (0); 336 337 error = VOP_GETATTR(vp, &vap, cred, curthread); 338 if (error) 339 return (error); |
340 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE)); | 340 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 341 MBI_WRITE)); |
341} 342 343static int 344mac_bsdextended_check_vnode_access(struct ucred *cred, struct vnode *vp, 345 struct label *label, int acc_mode) 346{ 347 struct vattr vap; 348 int error; --- 15 unchanged lines hidden (view full) --- 364 int error; 365 366 if (!mac_bsdextended_enabled) 367 return (0); 368 369 error = VOP_GETATTR(dvp, &vap, cred, curthread); 370 if (error) 371 return (error); | 342} 343 344static int 345mac_bsdextended_check_vnode_access(struct ucred *cred, struct vnode *vp, 346 struct label *label, int acc_mode) 347{ 348 struct vattr vap; 349 int error; --- 15 unchanged lines hidden (view full) --- 365 int error; 366 367 if (!mac_bsdextended_enabled) 368 return (0); 369 370 error = VOP_GETATTR(dvp, &vap, cred, curthread); 371 if (error) 372 return (error); |
372 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VEXEC)); | 373 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 374 MBI_EXEC)); |
373} 374 375static int 376mac_bsdextended_check_vnode_chroot(struct ucred *cred, struct vnode *dvp, 377 struct label *dlabel) 378{ 379 struct vattr vap; 380 int error; 381 382 if (!mac_bsdextended_enabled) 383 return (0); 384 385 error = VOP_GETATTR(dvp, &vap, cred, curthread); 386 if (error) 387 return (error); | 375} 376 377static int 378mac_bsdextended_check_vnode_chroot(struct ucred *cred, struct vnode *dvp, 379 struct label *dlabel) 380{ 381 struct vattr vap; 382 int error; 383 384 if (!mac_bsdextended_enabled) 385 return (0); 386 387 error = VOP_GETATTR(dvp, &vap, cred, curthread); 388 if (error) 389 return (error); |
388 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VEXEC)); | 390 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 391 MBI_EXEC)); |
389} 390 391static int 392mac_bsdextended_check_create_vnode(struct ucred *cred, struct vnode *dvp, 393 struct label *dlabel, struct componentname *cnp, struct vattr *vap) 394{ 395 struct vattr dvap; 396 int error; 397 398 if (!mac_bsdextended_enabled) 399 return (0); 400 401 error = VOP_GETATTR(dvp, &dvap, cred, curthread); 402 if (error) 403 return (error); | 392} 393 394static int 395mac_bsdextended_check_create_vnode(struct ucred *cred, struct vnode *dvp, 396 struct label *dlabel, struct componentname *cnp, struct vattr *vap) 397{ 398 struct vattr dvap; 399 int error; 400 401 if (!mac_bsdextended_enabled) 402 return (0); 403 404 error = VOP_GETATTR(dvp, &dvap, cred, curthread); 405 if (error) 406 return (error); |
404 return (mac_bsdextended_check(cred, dvap.va_uid, dvap.va_gid, VWRITE)); | 407 return (mac_bsdextended_check(cred, dvap.va_uid, dvap.va_gid, 408 MBI_WRITE)); |
405} 406 407static int 408mac_bsdextended_check_vnode_delete(struct ucred *cred, struct vnode *dvp, 409 struct label *dlabel, struct vnode *vp, struct label *label, 410 struct componentname *cnp) 411{ 412 struct vattr vap; 413 int error; 414 415 if (!mac_bsdextended_enabled) 416 return (0); 417 418 error = VOP_GETATTR(dvp, &vap, cred, curthread); 419 if (error) 420 return (error); | 409} 410 411static int 412mac_bsdextended_check_vnode_delete(struct ucred *cred, struct vnode *dvp, 413 struct label *dlabel, struct vnode *vp, struct label *label, 414 struct componentname *cnp) 415{ 416 struct vattr vap; 417 int error; 418 419 if (!mac_bsdextended_enabled) 420 return (0); 421 422 error = VOP_GETATTR(dvp, &vap, cred, curthread); 423 if (error) 424 return (error); |
421 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE); | 425 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 426 MBI_WRITE); |
422 if (error) 423 return (error); 424 425 error = VOP_GETATTR(vp, &vap, cred, curthread); 426 if (error) 427 return (error); | 427 if (error) 428 return (error); 429 430 error = VOP_GETATTR(vp, &vap, cred, curthread); 431 if (error) 432 return (error); |
428 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE)); | 433 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 434 MBI_WRITE)); |
429} 430 431static int 432mac_bsdextended_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, 433 struct label *label, acl_type_t type) 434{ 435 struct vattr vap; 436 int error; 437 438 if (!mac_bsdextended_enabled) 439 return (0); 440 441 error = VOP_GETATTR(vp, &vap, cred, curthread); 442 if (error) 443 return (error); | 435} 436 437static int 438mac_bsdextended_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, 439 struct label *label, acl_type_t type) 440{ 441 struct vattr vap; 442 int error; 443 444 if (!mac_bsdextended_enabled) 445 return (0); 446 447 error = VOP_GETATTR(vp, &vap, cred, curthread); 448 if (error) 449 return (error); |
444 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VADMIN)); | 450 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 451 MBI_ADMIN)); |
445} 446 447static int 448mac_bsdextended_check_vnode_deleteextattr(struct ucred *cred, struct vnode *vp, 449 struct label *label, int attrnamespace, const char *name) 450{ 451 struct vattr vap; 452 int error; 453 454 if (!mac_bsdextended_enabled) 455 return (0); 456 457 error = VOP_GETATTR(vp, &vap, cred, curthread); 458 if (error) 459 return (error); | 452} 453 454static int 455mac_bsdextended_check_vnode_deleteextattr(struct ucred *cred, struct vnode *vp, 456 struct label *label, int attrnamespace, const char *name) 457{ 458 struct vattr vap; 459 int error; 460 461 if (!mac_bsdextended_enabled) 462 return (0); 463 464 error = VOP_GETATTR(vp, &vap, cred, curthread); 465 if (error) 466 return (error); |
460 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE)); | 467 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 468 MBI_WRITE)); |
461} 462 463static int 464mac_bsdextended_check_vnode_exec(struct ucred *cred, struct vnode *vp, 465 struct label *label, struct image_params *imgp, 466 struct label *execlabel) 467{ 468 struct vattr vap; 469 int error; 470 471 if (!mac_bsdextended_enabled) 472 return (0); 473 474 error = VOP_GETATTR(vp, &vap, cred, curthread); 475 if (error) 476 return (error); 477 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, | 469} 470 471static int 472mac_bsdextended_check_vnode_exec(struct ucred *cred, struct vnode *vp, 473 struct label *label, struct image_params *imgp, 474 struct label *execlabel) 475{ 476 struct vattr vap; 477 int error; 478 479 if (!mac_bsdextended_enabled) 480 return (0); 481 482 error = VOP_GETATTR(vp, &vap, cred, curthread); 483 if (error) 484 return (error); 485 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, |
478 VREAD|VEXEC)); | 486 MBI_READ|MBI_EXEC)); |
479} 480 481static int 482mac_bsdextended_check_vnode_getacl(struct ucred *cred, struct vnode *vp, 483 struct label *label, acl_type_t type) 484{ 485 struct vattr vap; 486 int error; 487 488 if (!mac_bsdextended_enabled) 489 return (0); 490 491 error = VOP_GETATTR(vp, &vap, cred, curthread); 492 if (error) 493 return (error); | 487} 488 489static int 490mac_bsdextended_check_vnode_getacl(struct ucred *cred, struct vnode *vp, 491 struct label *label, acl_type_t type) 492{ 493 struct vattr vap; 494 int error; 495 496 if (!mac_bsdextended_enabled) 497 return (0); 498 499 error = VOP_GETATTR(vp, &vap, cred, curthread); 500 if (error) 501 return (error); |
494 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VSTAT)); | 502 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 503 MBI_STAT)); |
495} 496 497static int 498mac_bsdextended_check_vnode_getextattr(struct ucred *cred, struct vnode *vp, 499 struct label *label, int attrnamespace, const char *name, struct uio *uio) 500{ 501 struct vattr vap; 502 int error; 503 504 if (!mac_bsdextended_enabled) 505 return (0); 506 507 error = VOP_GETATTR(vp, &vap, cred, curthread); 508 if (error) 509 return (error); | 504} 505 506static int 507mac_bsdextended_check_vnode_getextattr(struct ucred *cred, struct vnode *vp, 508 struct label *label, int attrnamespace, const char *name, struct uio *uio) 509{ 510 struct vattr vap; 511 int error; 512 513 if (!mac_bsdextended_enabled) 514 return (0); 515 516 error = VOP_GETATTR(vp, &vap, cred, curthread); 517 if (error) 518 return (error); |
510 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VREAD)); | 519 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 520 MBI_READ)); |
511} 512 513static int 514mac_bsdextended_check_vnode_link(struct ucred *cred, struct vnode *dvp, 515 struct label *dlabel, struct vnode *vp, struct label *label, 516 struct componentname *cnp) 517{ 518 struct vattr vap; 519 int error; 520 521 if (!mac_bsdextended_enabled) 522 return (0); 523 524 error = VOP_GETATTR(dvp, &vap, cred, curthread); 525 if (error) 526 return (error); | 521} 522 523static int 524mac_bsdextended_check_vnode_link(struct ucred *cred, struct vnode *dvp, 525 struct label *dlabel, struct vnode *vp, struct label *label, 526 struct componentname *cnp) 527{ 528 struct vattr vap; 529 int error; 530 531 if (!mac_bsdextended_enabled) 532 return (0); 533 534 error = VOP_GETATTR(dvp, &vap, cred, curthread); 535 if (error) 536 return (error); |
527 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE); | 537 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 538 MBI_WRITE); |
528 if (error) 529 return (error); 530 531 error = VOP_GETATTR(vp, &vap, cred, curthread); 532 if (error) 533 return (error); | 539 if (error) 540 return (error); 541 542 error = VOP_GETATTR(vp, &vap, cred, curthread); 543 if (error) 544 return (error); |
534 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE); | 545 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 546 MBI_WRITE); |
535 if (error) 536 return (error); 537 return (0); 538} 539 540static int 541mac_bsdextended_check_vnode_listextattr(struct ucred *cred, struct vnode *vp, 542 struct label *label, int attrnamespace) 543{ 544 struct vattr vap; 545 int error; 546 547 if (!mac_bsdextended_enabled) 548 return (0); 549 550 error = VOP_GETATTR(vp, &vap, cred, curthread); 551 if (error) 552 return (error); | 547 if (error) 548 return (error); 549 return (0); 550} 551 552static int 553mac_bsdextended_check_vnode_listextattr(struct ucred *cred, struct vnode *vp, 554 struct label *label, int attrnamespace) 555{ 556 struct vattr vap; 557 int error; 558 559 if (!mac_bsdextended_enabled) 560 return (0); 561 562 error = VOP_GETATTR(vp, &vap, cred, curthread); 563 if (error) 564 return (error); |
553 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VREAD)); | 565 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 566 MBI_READ)); |
554} 555 556static int 557mac_bsdextended_check_vnode_lookup(struct ucred *cred, struct vnode *dvp, 558 struct label *dlabel, struct componentname *cnp) 559{ 560 struct vattr vap; 561 int error; 562 563 if (!mac_bsdextended_enabled) 564 return (0); 565 566 error = VOP_GETATTR(dvp, &vap, cred, curthread); 567 if (error) 568 return (error); | 567} 568 569static int 570mac_bsdextended_check_vnode_lookup(struct ucred *cred, struct vnode *dvp, 571 struct label *dlabel, struct componentname *cnp) 572{ 573 struct vattr vap; 574 int error; 575 576 if (!mac_bsdextended_enabled) 577 return (0); 578 579 error = VOP_GETATTR(dvp, &vap, cred, curthread); 580 if (error) 581 return (error); |
569 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VEXEC)); | 582 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 583 MBI_EXEC)); |
570} 571 572static int 573mac_bsdextended_check_vnode_open(struct ucred *cred, struct vnode *vp, 574 struct label *filelabel, int acc_mode) 575{ 576 struct vattr vap; 577 int error; --- 15 unchanged lines hidden (view full) --- 593 int error; 594 595 if (!mac_bsdextended_enabled) 596 return (0); 597 598 error = VOP_GETATTR(dvp, &vap, cred, curthread); 599 if (error) 600 return (error); | 584} 585 586static int 587mac_bsdextended_check_vnode_open(struct ucred *cred, struct vnode *vp, 588 struct label *filelabel, int acc_mode) 589{ 590 struct vattr vap; 591 int error; --- 15 unchanged lines hidden (view full) --- 607 int error; 608 609 if (!mac_bsdextended_enabled) 610 return (0); 611 612 error = VOP_GETATTR(dvp, &vap, cred, curthread); 613 if (error) 614 return (error); |
601 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VREAD)); | 615 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 616 MBI_READ)); |
602} 603 604static int 605mac_bsdextended_check_vnode_readdlink(struct ucred *cred, struct vnode *vp, 606 struct label *label) 607{ 608 struct vattr vap; 609 int error; 610 611 if (!mac_bsdextended_enabled) 612 return (0); 613 614 error = VOP_GETATTR(vp, &vap, cred, curthread); 615 if (error) 616 return (error); | 617} 618 619static int 620mac_bsdextended_check_vnode_readdlink(struct ucred *cred, struct vnode *vp, 621 struct label *label) 622{ 623 struct vattr vap; 624 int error; 625 626 if (!mac_bsdextended_enabled) 627 return (0); 628 629 error = VOP_GETATTR(vp, &vap, cred, curthread); 630 if (error) 631 return (error); |
617 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VREAD)); | 632 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 633 MBI_READ)); |
618} 619 620static int 621mac_bsdextended_check_vnode_rename_from(struct ucred *cred, struct vnode *dvp, 622 struct label *dlabel, struct vnode *vp, struct label *label, 623 struct componentname *cnp) 624{ 625 struct vattr vap; 626 int error; 627 628 if (!mac_bsdextended_enabled) 629 return (0); 630 631 error = VOP_GETATTR(dvp, &vap, cred, curthread); 632 if (error) 633 return (error); | 634} 635 636static int 637mac_bsdextended_check_vnode_rename_from(struct ucred *cred, struct vnode *dvp, 638 struct label *dlabel, struct vnode *vp, struct label *label, 639 struct componentname *cnp) 640{ 641 struct vattr vap; 642 int error; 643 644 if (!mac_bsdextended_enabled) 645 return (0); 646 647 error = VOP_GETATTR(dvp, &vap, cred, curthread); 648 if (error) 649 return (error); |
634 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE); | 650 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 651 MBI_WRITE); |
635 if (error) 636 return (error); 637 error = VOP_GETATTR(vp, &vap, cred, curthread); 638 if (error) 639 return (error); | 652 if (error) 653 return (error); 654 error = VOP_GETATTR(vp, &vap, cred, curthread); 655 if (error) 656 return (error); |
640 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE); | 657 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 658 MBI_WRITE); |
641 642 return (error); 643} 644 645static int 646mac_bsdextended_check_vnode_rename_to(struct ucred *cred, struct vnode *dvp, 647 struct label *dlabel, struct vnode *vp, struct label *label, int samedir, 648 struct componentname *cnp) 649{ 650 struct vattr vap; 651 int error; 652 653 if (!mac_bsdextended_enabled) 654 return (0); 655 656 error = VOP_GETATTR(dvp, &vap, cred, curthread); 657 if (error) 658 return (error); | 659 660 return (error); 661} 662 663static int 664mac_bsdextended_check_vnode_rename_to(struct ucred *cred, struct vnode *dvp, 665 struct label *dlabel, struct vnode *vp, struct label *label, int samedir, 666 struct componentname *cnp) 667{ 668 struct vattr vap; 669 int error; 670 671 if (!mac_bsdextended_enabled) 672 return (0); 673 674 error = VOP_GETATTR(dvp, &vap, cred, curthread); 675 if (error) 676 return (error); |
659 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE); | 677 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 678 MBI_WRITE); |
660 if (error) 661 return (error); 662 663 if (vp != NULL) { 664 error = VOP_GETATTR(vp, &vap, cred, curthread); 665 if (error) 666 return (error); 667 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, | 679 if (error) 680 return (error); 681 682 if (vp != NULL) { 683 error = VOP_GETATTR(vp, &vap, cred, curthread); 684 if (error) 685 return (error); 686 error = mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, |
668 VWRITE); | 687 MBI_WRITE); |
669 } 670 671 return (error); 672} 673 674static int 675mac_bsdextended_check_vnode_revoke(struct ucred *cred, struct vnode *vp, 676 struct label *label) 677{ 678 struct vattr vap; 679 int error; 680 681 if (!mac_bsdextended_enabled) 682 return (0); 683 684 error = VOP_GETATTR(vp, &vap, cred, curthread); 685 if (error) 686 return (error); | 688 } 689 690 return (error); 691} 692 693static int 694mac_bsdextended_check_vnode_revoke(struct ucred *cred, struct vnode *vp, 695 struct label *label) 696{ 697 struct vattr vap; 698 int error; 699 700 if (!mac_bsdextended_enabled) 701 return (0); 702 703 error = VOP_GETATTR(vp, &vap, cred, curthread); 704 if (error) 705 return (error); |
687 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VADMIN)); | 706 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 707 MBI_ADMIN)); |
688} 689 690static int 691mac_bsdextended_check_setacl_vnode(struct ucred *cred, struct vnode *vp, 692 struct label *label, acl_type_t type, struct acl *acl) 693{ 694 struct vattr vap; 695 int error; 696 697 if (!mac_bsdextended_enabled) 698 return (0); 699 700 error = VOP_GETATTR(vp, &vap, cred, curthread); 701 if (error) 702 return (error); | 708} 709 710static int 711mac_bsdextended_check_setacl_vnode(struct ucred *cred, struct vnode *vp, 712 struct label *label, acl_type_t type, struct acl *acl) 713{ 714 struct vattr vap; 715 int error; 716 717 if (!mac_bsdextended_enabled) 718 return (0); 719 720 error = VOP_GETATTR(vp, &vap, cred, curthread); 721 if (error) 722 return (error); |
703 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VADMIN)); | 723 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 724 MBI_ADMIN)); |
704} 705 706static int 707mac_bsdextended_check_vnode_setextattr(struct ucred *cred, struct vnode *vp, 708 struct label *label, int attrnamespace, const char *name, struct uio *uio) 709{ 710 struct vattr vap; 711 int error; 712 713 if (!mac_bsdextended_enabled) 714 return (0); 715 716 error = VOP_GETATTR(vp, &vap, cred, curthread); 717 if (error) 718 return (error); | 725} 726 727static int 728mac_bsdextended_check_vnode_setextattr(struct ucred *cred, struct vnode *vp, 729 struct label *label, int attrnamespace, const char *name, struct uio *uio) 730{ 731 struct vattr vap; 732 int error; 733 734 if (!mac_bsdextended_enabled) 735 return (0); 736 737 error = VOP_GETATTR(vp, &vap, cred, curthread); 738 if (error) 739 return (error); |
719 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VWRITE)); | 740 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 741 MBI_WRITE)); |
720} 721 722static int 723mac_bsdextended_check_vnode_setflags(struct ucred *cred, struct vnode *vp, 724 struct label *label, u_long flags) 725{ 726 struct vattr vap; 727 int error; 728 729 if (!mac_bsdextended_enabled) 730 return (0); 731 732 error = VOP_GETATTR(vp, &vap, cred, curthread); 733 if (error) 734 return (error); | 742} 743 744static int 745mac_bsdextended_check_vnode_setflags(struct ucred *cred, struct vnode *vp, 746 struct label *label, u_long flags) 747{ 748 struct vattr vap; 749 int error; 750 751 if (!mac_bsdextended_enabled) 752 return (0); 753 754 error = VOP_GETATTR(vp, &vap, cred, curthread); 755 if (error) 756 return (error); |
735 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VADMIN)); | 757 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 758 MBI_ADMIN)); |
736} 737 738static int 739mac_bsdextended_check_vnode_setmode(struct ucred *cred, struct vnode *vp, 740 struct label *label, mode_t mode) 741{ 742 struct vattr vap; 743 int error; 744 745 if (!mac_bsdextended_enabled) 746 return (0); 747 748 error = VOP_GETATTR(vp, &vap, cred, curthread); 749 if (error) 750 return (error); | 759} 760 761static int 762mac_bsdextended_check_vnode_setmode(struct ucred *cred, struct vnode *vp, 763 struct label *label, mode_t mode) 764{ 765 struct vattr vap; 766 int error; 767 768 if (!mac_bsdextended_enabled) 769 return (0); 770 771 error = VOP_GETATTR(vp, &vap, cred, curthread); 772 if (error) 773 return (error); |
751 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VADMIN)); | 774 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 775 MBI_ADMIN)); |
752} 753 754static int 755mac_bsdextended_check_vnode_setowner(struct ucred *cred, struct vnode *vp, 756 struct label *label, uid_t uid, gid_t gid) 757{ 758 struct vattr vap; 759 int error; 760 761 if (!mac_bsdextended_enabled) 762 return (0); 763 764 error = VOP_GETATTR(vp, &vap, cred, curthread); 765 if (error) 766 return (error); | 776} 777 778static int 779mac_bsdextended_check_vnode_setowner(struct ucred *cred, struct vnode *vp, 780 struct label *label, uid_t uid, gid_t gid) 781{ 782 struct vattr vap; 783 int error; 784 785 if (!mac_bsdextended_enabled) 786 return (0); 787 788 error = VOP_GETATTR(vp, &vap, cred, curthread); 789 if (error) 790 return (error); |
767 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VADMIN)); | 791 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 792 MBI_ADMIN)); |
768} 769 770static int 771mac_bsdextended_check_vnode_setutimes(struct ucred *cred, struct vnode *vp, 772 struct label *label, struct timespec atime, struct timespec utime) 773{ 774 struct vattr vap; 775 int error; 776 777 if (!mac_bsdextended_enabled) 778 return (0); 779 780 error = VOP_GETATTR(vp, &vap, cred, curthread); 781 if (error) 782 return (error); | 793} 794 795static int 796mac_bsdextended_check_vnode_setutimes(struct ucred *cred, struct vnode *vp, 797 struct label *label, struct timespec atime, struct timespec utime) 798{ 799 struct vattr vap; 800 int error; 801 802 if (!mac_bsdextended_enabled) 803 return (0); 804 805 error = VOP_GETATTR(vp, &vap, cred, curthread); 806 if (error) 807 return (error); |
783 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, VADMIN)); | 808 return (mac_bsdextended_check(cred, vap.va_uid, vap.va_gid, 809 MBI_ADMIN)); |
784} 785 786static int 787mac_bsdextended_check_vnode_stat(struct ucred *active_cred, 788 struct ucred *file_cred, struct vnode *vp, struct label *label) 789{ 790 struct vattr vap; 791 int error; 792 793 if (!mac_bsdextended_enabled) 794 return (0); 795 796 error = VOP_GETATTR(vp, &vap, active_cred, curthread); 797 if (error) 798 return (error); 799 return (mac_bsdextended_check(active_cred, vap.va_uid, vap.va_gid, | 810} 811 812static int 813mac_bsdextended_check_vnode_stat(struct ucred *active_cred, 814 struct ucred *file_cred, struct vnode *vp, struct label *label) 815{ 816 struct vattr vap; 817 int error; 818 819 if (!mac_bsdextended_enabled) 820 return (0); 821 822 error = VOP_GETATTR(vp, &vap, active_cred, curthread); 823 if (error) 824 return (error); 825 return (mac_bsdextended_check(active_cred, vap.va_uid, vap.va_gid, |
800 VSTAT)); | 826 MBI_STAT)); |
801} 802 803static struct mac_policy_ops mac_bsdextended_ops = 804{ 805 .mpo_destroy = mac_bsdextended_destroy, 806 .mpo_init = mac_bsdextended_init, 807 .mpo_check_system_swapon = mac_bsdextended_check_system_swapon, 808 .mpo_check_vnode_access = mac_bsdextended_check_vnode_access, --- 29 unchanged lines hidden --- | 827} 828 829static struct mac_policy_ops mac_bsdextended_ops = 830{ 831 .mpo_destroy = mac_bsdextended_destroy, 832 .mpo_init = mac_bsdextended_init, 833 .mpo_check_system_swapon = mac_bsdextended_check_system_swapon, 834 .mpo_check_vnode_access = mac_bsdextended_check_vnode_access, --- 29 unchanged lines hidden --- |