Changeset 745 for trunk/server/source3/rpcclient/cmd_samr.c
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source3/rpcclient/cmd_samr.c
r414 r745 26 26 #include "rpcclient.h" 27 27 #include "../libcli/auth/libcli_auth.h" 28 #include "../librpc/gen_ndr/cli_samr.h" 29 30 extern DOM_SID domain_sid; 28 #include "../librpc/gen_ndr/ndr_samr.h" 29 #include "../librpc/gen_ndr/ndr_samr_c.h" 30 #include "rpc_client/cli_samr.h" 31 #include "rpc_client/init_samr.h" 32 #include "rpc_client/init_lsa.h" 33 #include "../libcli/security/security.h" 34 35 extern struct dom_sid domain_sid; 31 36 32 37 /**************************************************************************** … … 277 282 struct policy_handle *domain_pol) 278 283 { 284 struct dcerpc_binding_handle *b = cli->binding_handle; 285 NTSTATUS status = NT_STATUS_INVALID_PARAMETER, result; 279 286 280 287 if (StrCaseCmp(sam, "domain") == 0) { 281 return rpccli_samr_OpenDomain(cli, mem_ctx,288 status = dcerpc_samr_OpenDomain(b, mem_ctx, 282 289 connect_pol, 283 290 access_mask, 284 291 _domain_sid, 285 domain_pol); 292 domain_pol, 293 &result); 286 294 } else if (StrCaseCmp(sam, "builtin") == 0) { 287 return rpccli_samr_OpenDomain(cli, mem_ctx,295 status = dcerpc_samr_OpenDomain(b, mem_ctx, 288 296 connect_pol, 289 297 access_mask, 290 298 CONST_DISCARD(struct dom_sid2 *, &global_sid_Builtin), 291 domain_pol); 292 } 293 294 return NT_STATUS_INVALID_PARAMETER; 299 domain_pol, 300 &result); 301 } 302 303 if (!NT_STATUS_IS_OK(status)) { 304 return status; 305 } 306 307 return result; 295 308 } 296 309 … … 303 316 { 304 317 struct policy_handle connect_pol, domain_pol, user_pol; 305 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;318 NTSTATUS status, result; 306 319 uint32 info_level = 21; 307 320 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 308 321 union samr_UserInfo *info = NULL; 309 322 uint32 user_rid = 0; 323 struct dcerpc_binding_handle *b = cli->binding_handle; 310 324 311 325 if ((argc < 2) || (argc > 4)) { … … 323 337 324 338 325 result= rpccli_try_samr_connects(cli, mem_ctx,339 status = rpccli_try_samr_connects(cli, mem_ctx, 326 340 MAXIMUM_ALLOWED_ACCESS, 327 341 &connect_pol); 328 329 if (!NT_STATUS_IS_OK(result))330 goto done;331 332 result = rpccli_samr_OpenDomain(cli, mem_ctx,342 if (!NT_STATUS_IS_OK(status)) { 343 goto done; 344 } 345 346 status = dcerpc_samr_OpenDomain(b, mem_ctx, 333 347 &connect_pol, 334 348 MAXIMUM_ALLOWED_ACCESS, 335 349 &domain_sid, 336 &domain_pol); 337 if (!NT_STATUS_IS_OK(result)) 338 goto done; 339 340 result = rpccli_samr_OpenUser(cli, mem_ctx, 350 &domain_pol, 351 &result); 352 if (!NT_STATUS_IS_OK(status)) { 353 goto done; 354 } 355 if (!NT_STATUS_IS_OK(result)) { 356 status = result; 357 goto done; 358 } 359 360 status = dcerpc_samr_OpenUser(b, mem_ctx, 341 361 &domain_pol, 342 362 access_mask, 343 363 user_rid, 344 &user_pol); 345 364 &user_pol, 365 &result); 366 if (!NT_STATUS_IS_OK(status)) { 367 goto done; 368 } 346 369 if (NT_STATUS_EQUAL(result, NT_STATUS_NO_SUCH_USER) && 347 370 (user_rid == 0)) { … … 353 376 init_lsa_String(&lsa_acct_name, argv[1]); 354 377 355 result = rpccli_samr_LookupNames(cli, mem_ctx,378 status = dcerpc_samr_LookupNames(b, mem_ctx, 356 379 &domain_pol, 357 380 1, 358 381 &lsa_acct_name, 359 382 &rids, 360 &types); 361 383 &types, 384 &result); 385 if (!NT_STATUS_IS_OK(status)) { 386 goto done; 387 } 362 388 if (NT_STATUS_IS_OK(result)) { 363 result = rpccli_samr_OpenUser(cli, mem_ctx,389 status = dcerpc_samr_OpenUser(b, mem_ctx, 364 390 &domain_pol, 365 391 access_mask, 366 392 rids.ids[0], 367 &user_pol); 368 } 369 } 370 371 372 if (!NT_STATUS_IS_OK(result)) 373 goto done; 374 375 result = rpccli_samr_QueryUserInfo(cli, mem_ctx, 393 &user_pol, 394 &result); 395 if (!NT_STATUS_IS_OK(status)) { 396 goto done; 397 } 398 } 399 } 400 401 402 if (!NT_STATUS_IS_OK(result)) { 403 status = result; 404 goto done; 405 } 406 407 status = dcerpc_samr_QueryUserInfo(b, mem_ctx, 376 408 &user_pol, 377 409 info_level, 378 &info); 379 380 if (!NT_STATUS_IS_OK(result)) 381 goto done; 410 &info, 411 &result); 412 if (!NT_STATUS_IS_OK(status)) { 413 goto done; 414 } 415 if (!NT_STATUS_IS_OK(result)) { 416 status = result; 417 goto done; 418 } 382 419 383 420 switch (info_level) { … … 402 439 } 403 440 404 rpccli_samr_Close(cli, mem_ctx, &user_pol);405 rpccli_samr_Close(cli, mem_ctx, &domain_pol);406 rpccli_samr_Close(cli, mem_ctx, &connect_pol);441 dcerpc_samr_Close(b, mem_ctx, &user_pol, &result); 442 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 443 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 407 444 408 445 done: 409 return result;446 return status; 410 447 } 411 448 … … 491 528 { 492 529 struct policy_handle connect_pol, domain_pol, group_pol; 493 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;530 NTSTATUS status, result; 494 531 enum samr_GroupInfoEnum info_level = GROUPINFOALL; 495 532 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 496 533 union samr_GroupInfo *group_info = NULL; 497 534 uint32 group_rid; 535 struct dcerpc_binding_handle *b = cli->binding_handle; 498 536 499 537 if ((argc < 2) || (argc > 4)) { … … 510 548 sscanf(argv[3], "%x", &access_mask); 511 549 512 result= rpccli_try_samr_connects(cli, mem_ctx,550 status = rpccli_try_samr_connects(cli, mem_ctx, 513 551 MAXIMUM_ALLOWED_ACCESS, 514 552 &connect_pol); 515 516 if (!NT_STATUS_IS_OK(result))517 goto done;518 519 result = rpccli_samr_OpenDomain(cli, mem_ctx,553 if (!NT_STATUS_IS_OK(status)) { 554 goto done; 555 } 556 557 status = dcerpc_samr_OpenDomain(b, mem_ctx, 520 558 &connect_pol, 521 559 MAXIMUM_ALLOWED_ACCESS, 522 560 &domain_sid, 523 &domain_pol); 524 525 if (!NT_STATUS_IS_OK(result)) 526 goto done; 527 528 result = rpccli_samr_OpenGroup(cli, mem_ctx, 561 &domain_pol, 562 &result); 563 if (!NT_STATUS_IS_OK(status)) { 564 goto done; 565 } 566 if (!NT_STATUS_IS_OK(result)) { 567 status = result; 568 goto done; 569 } 570 571 status = dcerpc_samr_OpenGroup(b, mem_ctx, 529 572 &domain_pol, 530 573 access_mask, 531 574 group_rid, 532 &group_pol); 533 534 if (!NT_STATUS_IS_OK(result)) 535 goto done; 536 537 result = rpccli_samr_QueryGroupInfo(cli, mem_ctx, 575 &group_pol, 576 &result); 577 if (!NT_STATUS_IS_OK(status)) { 578 goto done; 579 } 580 if (!NT_STATUS_IS_OK(result)) { 581 status = result; 582 goto done; 583 } 584 585 status = dcerpc_samr_QueryGroupInfo(b, mem_ctx, 538 586 &group_pol, 539 587 info_level, 540 &group_info); 541 if (!NT_STATUS_IS_OK(result)) { 588 &group_info, 589 &result); 590 if (!NT_STATUS_IS_OK(status)) { 591 goto done; 592 } 593 if (!NT_STATUS_IS_OK(result)) { 594 status = result; 542 595 goto done; 543 596 } … … 545 598 display_group_info(group_info, info_level); 546 599 547 rpccli_samr_Close(cli, mem_ctx, &group_pol);548 rpccli_samr_Close(cli, mem_ctx, &domain_pol);549 rpccli_samr_Close(cli, mem_ctx, &connect_pol);600 dcerpc_samr_Close(b, mem_ctx, &group_pol, &result); 601 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 602 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 550 603 done: 551 return result;604 return status; 552 605 } 553 606 … … 561 614 domain_pol, 562 615 user_pol; 563 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;616 NTSTATUS status, result; 564 617 uint32 user_rid; 565 618 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 566 619 int i; 567 620 struct samr_RidWithAttributeArray *rid_array = NULL; 621 struct dcerpc_binding_handle *b = cli->binding_handle; 568 622 569 623 if ((argc < 2) || (argc > 3)) { … … 577 631 sscanf(argv[2], "%x", &access_mask); 578 632 579 result= rpccli_try_samr_connects(cli, mem_ctx,633 status = rpccli_try_samr_connects(cli, mem_ctx, 580 634 MAXIMUM_ALLOWED_ACCESS, 581 635 &connect_pol); 582 583 if (!NT_STATUS_IS_OK(result))584 goto done;585 586 result = rpccli_samr_OpenDomain(cli, mem_ctx,636 if (!NT_STATUS_IS_OK(status)) { 637 goto done; 638 } 639 640 status = dcerpc_samr_OpenDomain(b, mem_ctx, 587 641 &connect_pol, 588 642 MAXIMUM_ALLOWED_ACCESS, 589 &domain_sid, &domain_pol); 590 591 if (!NT_STATUS_IS_OK(result)) 592 goto done; 593 594 result = rpccli_samr_OpenUser(cli, mem_ctx, 643 &domain_sid, 644 &domain_pol, 645 &result); 646 if (!NT_STATUS_IS_OK(status)) { 647 goto done; 648 } 649 if (!NT_STATUS_IS_OK(result)) { 650 status = result; 651 goto done; 652 } 653 654 status = dcerpc_samr_OpenUser(b, mem_ctx, 595 655 &domain_pol, 596 656 access_mask, 597 657 user_rid, 598 &user_pol); 599 600 if (!NT_STATUS_IS_OK(result)) 601 goto done; 602 603 result = rpccli_samr_GetGroupsForUser(cli, mem_ctx, 658 &user_pol, 659 &result); 660 661 if (!NT_STATUS_IS_OK(status)) { 662 goto done; 663 } 664 if (!NT_STATUS_IS_OK(result)) { 665 status = result; 666 goto done; 667 } 668 669 status = dcerpc_samr_GetGroupsForUser(b, mem_ctx, 604 670 &user_pol, 605 &rid_array); 606 607 if (!NT_STATUS_IS_OK(result)) 608 goto done; 671 &rid_array, 672 &result); 673 if (!NT_STATUS_IS_OK(status)) { 674 goto done; 675 } 676 if (!NT_STATUS_IS_OK(result)) { 677 status = result; 678 goto done; 679 } 609 680 610 681 for (i = 0; i < rid_array->count; i++) { … … 614 685 } 615 686 616 rpccli_samr_Close(cli, mem_ctx, &user_pol);617 rpccli_samr_Close(cli, mem_ctx, &domain_pol);618 rpccli_samr_Close(cli, mem_ctx, &connect_pol);687 dcerpc_samr_Close(b, mem_ctx, &user_pol, &result); 688 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 689 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 619 690 done: 620 return result;691 return status; 621 692 } 622 693 … … 628 699 { 629 700 struct policy_handle connect_pol, domain_pol; 630 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;631 DOM_SID*sids;632 size_t num_sids;701 NTSTATUS status, result; 702 struct dom_sid *sids; 703 uint32_t num_sids; 633 704 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 634 705 int i; 635 706 struct lsa_SidArray sid_array; 636 707 struct samr_Ids alias_rids; 708 struct dcerpc_binding_handle *b = cli->binding_handle; 637 709 638 710 if (argc < 3) { … … 645 717 646 718 for (i=2; i<argc; i++) { 647 DOM_SIDtmp_sid;719 struct dom_sid tmp_sid; 648 720 if (!string_to_sid(&tmp_sid, argv[i])) { 649 721 printf("%s is not a legal SID\n", argv[i]); … … 665 737 666 738 for (i=0; i<num_sids; i++) { 667 sid_array.sids[i].sid = sid_dup_talloc(mem_ctx, &sids[i]);739 sid_array.sids[i].sid = dom_sid_dup(mem_ctx, &sids[i]); 668 740 if (!sid_array.sids[i].sid) { 669 741 return NT_STATUS_NO_MEMORY; … … 673 745 sid_array.num_sids = num_sids; 674 746 675 result= rpccli_try_samr_connects(cli, mem_ctx,747 status = rpccli_try_samr_connects(cli, mem_ctx, 676 748 MAXIMUM_ALLOWED_ACCESS, 677 749 &connect_pol); 678 679 if (!NT_STATUS_IS_OK(result))680 goto done;681 682 result= get_domain_handle(cli, mem_ctx, argv[1],750 if (!NT_STATUS_IS_OK(status)) { 751 goto done; 752 } 753 754 status = get_domain_handle(cli, mem_ctx, argv[1], 683 755 &connect_pol, 684 756 access_mask, 685 757 &domain_sid, 686 758 &domain_pol); 687 688 if (!NT_STATUS_IS_OK(result))689 goto done;690 691 result = rpccli_samr_GetAliasMembership(cli, mem_ctx,759 if (!NT_STATUS_IS_OK(status)) { 760 goto done; 761 } 762 763 status = dcerpc_samr_GetAliasMembership(b, mem_ctx, 692 764 &domain_pol, 693 765 &sid_array, 694 &alias_rids); 695 if (!NT_STATUS_IS_OK(result)) 696 goto done; 766 &alias_rids, 767 &result); 768 if (!NT_STATUS_IS_OK(status)) { 769 goto done; 770 } 771 if (!NT_STATUS_IS_OK(result)) { 772 status = result; 773 goto done; 774 } 697 775 698 776 for (i = 0; i < alias_rids.count; i++) { … … 700 778 } 701 779 702 rpccli_samr_Close(cli, mem_ctx, &domain_pol);703 rpccli_samr_Close(cli, mem_ctx, &connect_pol);780 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 781 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 704 782 done: 705 return result;783 return status; 706 784 } 707 785 … … 713 791 { 714 792 struct policy_handle connect_pol, domain_pol, group_pol; 715 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;793 NTSTATUS status, result; 716 794 uint32 group_rid; 717 795 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 718 796 int i; 719 797 unsigned int old_timeout; 720 struct samr_RidTypeArray *rids = NULL; 798 struct samr_RidAttrArray *rids = NULL; 799 struct dcerpc_binding_handle *b = cli->binding_handle; 721 800 722 801 if ((argc < 2) || (argc > 3)) { … … 730 809 sscanf(argv[2], "%x", &access_mask); 731 810 732 result= rpccli_try_samr_connects(cli, mem_ctx,811 status = rpccli_try_samr_connects(cli, mem_ctx, 733 812 MAXIMUM_ALLOWED_ACCESS, 734 813 &connect_pol); 735 736 if (!NT_STATUS_IS_OK(result))737 goto done;738 739 result = rpccli_samr_OpenDomain(cli, mem_ctx,814 if (!NT_STATUS_IS_OK(status)) { 815 goto done; 816 } 817 818 status = dcerpc_samr_OpenDomain(b, mem_ctx, 740 819 &connect_pol, 741 820 MAXIMUM_ALLOWED_ACCESS, 742 821 &domain_sid, 743 &domain_pol); 744 745 if (!NT_STATUS_IS_OK(result)) 746 goto done; 747 748 result = rpccli_samr_OpenGroup(cli, mem_ctx, 822 &domain_pol, 823 &result); 824 if (!NT_STATUS_IS_OK(status)) { 825 goto done; 826 } 827 if (!NT_STATUS_IS_OK(result)) { 828 status = result; 829 goto done; 830 } 831 832 status = dcerpc_samr_OpenGroup(b, mem_ctx, 749 833 &domain_pol, 750 834 access_mask, 751 835 group_rid, 752 &group_pol); 753 754 if (!NT_STATUS_IS_OK(result)) 755 goto done; 836 &group_pol, 837 &result); 838 if (!NT_STATUS_IS_OK(status)) { 839 goto done; 840 } 841 if (!NT_STATUS_IS_OK(result)) { 842 status = result; 843 goto done; 844 } 756 845 757 846 /* Make sure to wait for our DC's reply */ … … 759 848 rpccli_set_timeout(cli, MAX(30000, old_timeout)); /* At least 30 sec */ 760 849 761 result = rpccli_samr_QueryGroupMember(cli, mem_ctx,850 status = dcerpc_samr_QueryGroupMember(b, mem_ctx, 762 851 &group_pol, 763 &rids); 852 &rids, 853 &result); 764 854 765 855 rpccli_set_timeout(cli, old_timeout); 766 856 767 if (!NT_STATUS_IS_OK(result)) 768 goto done; 857 if (!NT_STATUS_IS_OK(status)) { 858 goto done; 859 } 860 if (!NT_STATUS_IS_OK(result)) { 861 status = result; 862 goto done; 863 } 769 864 770 865 for (i = 0; i < rids->count; i++) { 771 866 printf("\trid:[0x%x] attr:[0x%x]\n", rids->rids[i], 772 rids-> types[i]);773 } 774 775 rpccli_samr_Close(cli, mem_ctx, &group_pol);776 rpccli_samr_Close(cli, mem_ctx, &domain_pol);777 rpccli_samr_Close(cli, mem_ctx, &connect_pol);867 rids->attributes[i]); 868 } 869 870 dcerpc_samr_Close(b, mem_ctx, &group_pol, &result); 871 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 872 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 778 873 done: 779 return result;874 return status; 780 875 } 781 876 … … 787 882 { 788 883 struct policy_handle connect_pol, domain_pol; 789 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;884 NTSTATUS status, result; 790 885 uint32 start_idx, num_dom_users, i; 791 886 struct samr_SamArray *dom_users = NULL; … … 793 888 uint32 acb_mask = ACB_NORMAL; 794 889 uint32_t size = 0xffff; 890 struct dcerpc_binding_handle *b = cli->binding_handle; 795 891 796 892 if ((argc < 1) || (argc > 4)) { … … 813 909 /* Get sam policy handle */ 814 910 815 result= rpccli_try_samr_connects(cli, mem_ctx,911 status = rpccli_try_samr_connects(cli, mem_ctx, 816 912 MAXIMUM_ALLOWED_ACCESS, 817 913 &connect_pol); 818 819 if (!NT_STATUS_IS_OK(result))820 goto done;914 if (!NT_STATUS_IS_OK(status)) { 915 goto done; 916 } 821 917 822 918 /* Get domain policy handle */ 823 919 824 result= get_domain_handle(cli, mem_ctx, "domain",920 status = get_domain_handle(cli, mem_ctx, "domain", 825 921 &connect_pol, 826 922 access_mask, 827 923 &domain_sid, 828 924 &domain_pol); 829 if (!NT_STATUS_IS_OK(result)) 830 goto done; 925 if (!NT_STATUS_IS_OK(status)) { 926 goto done; 927 } 831 928 832 929 /* Enumerate domain users */ … … 835 932 836 933 do { 837 result = rpccli_samr_EnumDomainUsers(cli, mem_ctx,934 status = dcerpc_samr_EnumDomainUsers(b, mem_ctx, 838 935 &domain_pol, 839 936 &start_idx, … … 841 938 &dom_users, 842 939 size, 843 &num_dom_users); 844 940 &num_dom_users, 941 &result); 942 if (!NT_STATUS_IS_OK(status)) { 943 goto done; 944 } 845 945 if (NT_STATUS_IS_OK(result) || 846 946 NT_STATUS_V(result) == NT_STATUS_V(STATUS_MORE_ENTRIES)) { … … 856 956 done: 857 957 if (is_valid_policy_hnd(&domain_pol)) 858 rpccli_samr_Close(cli, mem_ctx, &domain_pol);958 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 859 959 860 960 if (is_valid_policy_hnd(&connect_pol)) 861 rpccli_samr_Close(cli, mem_ctx, &connect_pol);862 863 return result;961 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 962 963 return status; 864 964 } 865 965 … … 871 971 { 872 972 struct policy_handle connect_pol, domain_pol; 873 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;973 NTSTATUS status, result; 874 974 uint32 start_idx, num_dom_groups, i; 875 975 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 876 976 struct samr_SamArray *dom_groups = NULL; 877 977 uint32_t size = 0xffff; 978 struct dcerpc_binding_handle *b = cli->binding_handle; 878 979 879 980 if ((argc < 1) || (argc > 3)) { … … 892 993 /* Get sam policy handle */ 893 994 894 result= rpccli_try_samr_connects(cli, mem_ctx,995 status = rpccli_try_samr_connects(cli, mem_ctx, 895 996 MAXIMUM_ALLOWED_ACCESS, 896 997 &connect_pol); 897 898 if (!NT_STATUS_IS_OK(result))899 goto done;998 if (!NT_STATUS_IS_OK(status)) { 999 goto done; 1000 } 900 1001 901 1002 /* Get domain policy handle */ 902 1003 903 result= get_domain_handle(cli, mem_ctx, "domain",1004 status = get_domain_handle(cli, mem_ctx, "domain", 904 1005 &connect_pol, 905 1006 access_mask, 906 1007 &domain_sid, 907 1008 &domain_pol); 908 if (!NT_STATUS_IS_OK(result)) 909 goto done; 1009 if (!NT_STATUS_IS_OK(status)) { 1010 goto done; 1011 } 910 1012 911 1013 /* Enumerate domain groups */ … … 914 1016 915 1017 do { 916 result = rpccli_samr_EnumDomainGroups(cli, mem_ctx,1018 status = dcerpc_samr_EnumDomainGroups(b, mem_ctx, 917 1019 &domain_pol, 918 1020 &start_idx, 919 1021 &dom_groups, 920 1022 size, 921 &num_dom_groups); 1023 &num_dom_groups, 1024 &result); 1025 if (!NT_STATUS_IS_OK(status)) { 1026 goto done; 1027 } 922 1028 if (NT_STATUS_IS_OK(result) || 923 1029 NT_STATUS_V(result) == NT_STATUS_V(STATUS_MORE_ENTRIES)) { … … 933 1039 done: 934 1040 if (is_valid_policy_hnd(&domain_pol)) 935 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1041 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 936 1042 937 1043 if (is_valid_policy_hnd(&connect_pol)) 938 rpccli_samr_Close(cli, mem_ctx, &connect_pol);939 940 return result;1044 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1045 1046 return status; 941 1047 } 942 1048 … … 948 1054 { 949 1055 struct policy_handle connect_pol, domain_pol; 950 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1056 NTSTATUS status, result; 951 1057 uint32 start_idx, num_als_groups, i; 952 1058 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 953 1059 struct samr_SamArray *als_groups = NULL; 954 1060 uint32_t size = 0xffff; 1061 struct dcerpc_binding_handle *b = cli->binding_handle; 955 1062 956 1063 if ((argc < 2) || (argc > 4)) { … … 969 1076 /* Get sam policy handle */ 970 1077 971 result= rpccli_try_samr_connects(cli, mem_ctx,1078 status = rpccli_try_samr_connects(cli, mem_ctx, 972 1079 MAXIMUM_ALLOWED_ACCESS, 973 1080 &connect_pol); 974 975 if (!NT_STATUS_IS_OK(result))976 goto done;1081 if (!NT_STATUS_IS_OK(status)) { 1082 goto done; 1083 } 977 1084 978 1085 /* Get domain policy handle */ 979 1086 980 result= get_domain_handle(cli, mem_ctx, argv[1],1087 status = get_domain_handle(cli, mem_ctx, argv[1], 981 1088 &connect_pol, 982 1089 access_mask, 983 1090 &domain_sid, 984 1091 &domain_pol); 985 986 if (!NT_STATUS_IS_OK(result))987 goto done;1092 if (!NT_STATUS_IS_OK(status)) { 1093 goto done; 1094 } 988 1095 989 1096 /* Enumerate alias groups */ … … 992 1099 993 1100 do { 994 result = rpccli_samr_EnumDomainAliases(cli, mem_ctx,1101 status = dcerpc_samr_EnumDomainAliases(b, mem_ctx, 995 1102 &domain_pol, 996 1103 &start_idx, 997 1104 &als_groups, 998 1105 size, 999 &num_als_groups); 1000 1106 &num_als_groups, 1107 &result); 1108 if (!NT_STATUS_IS_OK(status)) { 1109 goto done; 1110 } 1001 1111 if (NT_STATUS_IS_OK(result) || 1002 1112 NT_STATUS_V(result) == NT_STATUS_V(STATUS_MORE_ENTRIES)) { … … 1011 1121 done: 1012 1122 if (is_valid_policy_hnd(&domain_pol)) 1013 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1123 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 1014 1124 1015 1125 if (is_valid_policy_hnd(&connect_pol)) 1016 rpccli_samr_Close(cli, mem_ctx, &connect_pol);1017 1018 return result;1126 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1127 1128 return status; 1019 1129 } 1020 1130 … … 1026 1136 { 1027 1137 struct policy_handle connect_pol; 1028 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1138 NTSTATUS status, result; 1029 1139 uint32 start_idx, size, num_entries, i; 1030 1140 uint32 access_mask = SEC_FLAG_MAXIMUM_ALLOWED; 1031 1141 struct samr_SamArray *sam = NULL; 1142 struct dcerpc_binding_handle *b = cli->binding_handle; 1032 1143 1033 1144 if ((argc < 1) || (argc > 2)) { … … 1042 1153 /* Get sam policy handle */ 1043 1154 1044 result= rpccli_try_samr_connects(cli, mem_ctx,1155 status = rpccli_try_samr_connects(cli, mem_ctx, 1045 1156 access_mask, 1046 1157 &connect_pol); 1047 1048 if (!NT_STATUS_IS_OK(result)) { 1158 if (!NT_STATUS_IS_OK(status)) { 1049 1159 goto done; 1050 1160 } … … 1056 1166 1057 1167 do { 1058 result = rpccli_samr_EnumDomains(cli, mem_ctx,1168 status = dcerpc_samr_EnumDomains(b, mem_ctx, 1059 1169 &connect_pol, 1060 1170 &start_idx, 1061 1171 &sam, 1062 1172 size, 1063 &num_entries); 1064 1173 &num_entries, 1174 &result); 1175 if (!NT_STATUS_IS_OK(status)) { 1176 goto done; 1177 } 1065 1178 if (NT_STATUS_IS_OK(result) || 1066 1179 NT_STATUS_V(result) == NT_STATUS_V(STATUS_MORE_ENTRIES)) { … … 1075 1188 done: 1076 1189 if (is_valid_policy_hnd(&connect_pol)) { 1077 rpccli_samr_Close(cli, mem_ctx, &connect_pol);1078 } 1079 1080 return result;1190 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1191 } 1192 1193 return status; 1081 1194 } 1082 1195 … … 1089 1202 { 1090 1203 struct policy_handle connect_pol, domain_pol, alias_pol; 1091 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1204 NTSTATUS status, result; 1092 1205 uint32 alias_rid, i; 1093 1206 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 1094 1207 struct lsa_SidArray sid_array; 1208 struct dcerpc_binding_handle *b = cli->binding_handle; 1095 1209 1096 1210 if ((argc < 3) || (argc > 4)) { … … 1106 1220 /* Open SAMR handle */ 1107 1221 1108 result= rpccli_try_samr_connects(cli, mem_ctx,1222 status = rpccli_try_samr_connects(cli, mem_ctx, 1109 1223 MAXIMUM_ALLOWED_ACCESS, 1110 1224 &connect_pol); 1111 1112 if (!NT_STATUS_IS_OK(result))1113 goto done;1225 if (!NT_STATUS_IS_OK(status)) { 1226 goto done; 1227 } 1114 1228 1115 1229 /* Open handle on domain */ 1116 1230 1117 result= get_domain_handle(cli, mem_ctx, argv[1],1231 status = get_domain_handle(cli, mem_ctx, argv[1], 1118 1232 &connect_pol, 1119 1233 MAXIMUM_ALLOWED_ACCESS, 1120 1234 &domain_sid, 1121 1235 &domain_pol); 1122 1123 if (!NT_STATUS_IS_OK(result))1124 goto done;1236 if (!NT_STATUS_IS_OK(status)) { 1237 goto done; 1238 } 1125 1239 1126 1240 /* Open handle on alias */ 1127 1241 1128 result = rpccli_samr_OpenAlias(cli, mem_ctx,1242 status = dcerpc_samr_OpenAlias(b, mem_ctx, 1129 1243 &domain_pol, 1130 1244 access_mask, 1131 1245 alias_rid, 1132 &alias_pol); 1133 if (!NT_STATUS_IS_OK(result)) 1134 goto done; 1135 1136 result = rpccli_samr_GetMembersInAlias(cli, mem_ctx, 1246 &alias_pol, 1247 &result); 1248 if (!NT_STATUS_IS_OK(status)) { 1249 goto done; 1250 } 1251 if (!NT_STATUS_IS_OK(result)) { 1252 status = result; 1253 goto done; 1254 } 1255 1256 status = dcerpc_samr_GetMembersInAlias(b, mem_ctx, 1137 1257 &alias_pol, 1138 &sid_array); 1139 1140 if (!NT_STATUS_IS_OK(result)) 1141 goto done; 1258 &sid_array, 1259 &result); 1260 if (!NT_STATUS_IS_OK(status)) { 1261 goto done; 1262 } 1263 if (!NT_STATUS_IS_OK(result)) { 1264 status = result; 1265 goto done; 1266 } 1142 1267 1143 1268 for (i = 0; i < sid_array.num_sids; i++) { … … 1148 1273 } 1149 1274 1150 rpccli_samr_Close(cli, mem_ctx, &alias_pol);1151 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1152 rpccli_samr_Close(cli, mem_ctx, &connect_pol);1275 dcerpc_samr_Close(b, mem_ctx, &alias_pol, &result); 1276 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 1277 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1153 1278 done: 1154 return result;1279 return status; 1155 1280 } 1156 1281 … … 1162 1287 { 1163 1288 struct policy_handle connect_pol, domain_pol, alias_pol; 1164 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1289 NTSTATUS status, result; 1165 1290 uint32_t alias_rid; 1166 1291 uint32_t access_mask = SEC_FLAG_MAXIMUM_ALLOWED; 1167 1292 union samr_AliasInfo *info = NULL; 1168 1293 enum samr_AliasInfoEnum level = ALIASINFOALL; 1294 struct dcerpc_binding_handle *b = cli->binding_handle; 1169 1295 1170 1296 if ((argc < 3) || (argc > 4)) { … … 1186 1312 /* Open SAMR handle */ 1187 1313 1188 result= rpccli_try_samr_connects(cli, mem_ctx,1314 status = rpccli_try_samr_connects(cli, mem_ctx, 1189 1315 SEC_FLAG_MAXIMUM_ALLOWED, 1190 1316 &connect_pol); 1191 1192 if (!NT_STATUS_IS_OK(result)) { 1317 if (!NT_STATUS_IS_OK(status)) { 1193 1318 goto done; 1194 1319 } … … 1196 1321 /* Open handle on domain */ 1197 1322 1198 result= get_domain_handle(cli, mem_ctx, argv[1],1323 status = get_domain_handle(cli, mem_ctx, argv[1], 1199 1324 &connect_pol, 1200 1325 SEC_FLAG_MAXIMUM_ALLOWED, 1201 1326 &domain_sid, 1202 1327 &domain_pol); 1203 1204 if (!NT_STATUS_IS_OK(result)) { 1328 if (!NT_STATUS_IS_OK(status)) { 1205 1329 goto done; 1206 1330 } … … 1208 1332 /* Open handle on alias */ 1209 1333 1210 result = rpccli_samr_OpenAlias(cli, mem_ctx,1334 status = dcerpc_samr_OpenAlias(b, mem_ctx, 1211 1335 &domain_pol, 1212 1336 access_mask, 1213 1337 alias_rid, 1214 &alias_pol); 1215 if (!NT_STATUS_IS_OK(result)) { 1216 goto done; 1217 } 1218 1219 result = rpccli_samr_QueryAliasInfo(cli, mem_ctx, 1338 &alias_pol, 1339 &result); 1340 if (!NT_STATUS_IS_OK(status)) { 1341 goto done; 1342 } 1343 if (!NT_STATUS_IS_OK(result)) { 1344 status = result; 1345 goto done; 1346 } 1347 1348 status = dcerpc_samr_QueryAliasInfo(b, mem_ctx, 1220 1349 &alias_pol, 1221 1350 level, 1222 &info); 1223 1224 if (!NT_STATUS_IS_OK(result)) { 1351 &info, 1352 &result); 1353 if (!NT_STATUS_IS_OK(status)) { 1354 goto done; 1355 } 1356 if (!NT_STATUS_IS_OK(result)) { 1357 status = result; 1225 1358 goto done; 1226 1359 } … … 1242 1375 } 1243 1376 1244 rpccli_samr_Close(cli, mem_ctx, &alias_pol);1245 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1246 rpccli_samr_Close(cli, mem_ctx, &connect_pol);1377 dcerpc_samr_Close(b, mem_ctx, &alias_pol, &result); 1378 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 1379 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1247 1380 done: 1248 return result;1381 return status; 1249 1382 } 1250 1383 … … 1257 1390 { 1258 1391 struct policy_handle connect_pol, domain_pol, alias_pol; 1259 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1392 NTSTATUS status, result; 1260 1393 uint32 alias_rid; 1261 1394 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 1395 struct dcerpc_binding_handle *b = cli->binding_handle; 1262 1396 1263 1397 if (argc != 3) { … … 1270 1404 /* Open SAMR handle */ 1271 1405 1272 result= rpccli_try_samr_connects(cli, mem_ctx,1406 status = rpccli_try_samr_connects(cli, mem_ctx, 1273 1407 MAXIMUM_ALLOWED_ACCESS, 1274 1408 &connect_pol); 1275 1276 if (!NT_STATUS_IS_OK(result))1277 goto done;1409 if (!NT_STATUS_IS_OK(status)) { 1410 goto done; 1411 } 1278 1412 1279 1413 /* Open handle on domain */ 1280 1414 1281 result= get_domain_handle(cli, mem_ctx, argv[1],1415 status = get_domain_handle(cli, mem_ctx, argv[1], 1282 1416 &connect_pol, 1283 1417 MAXIMUM_ALLOWED_ACCESS, 1284 1418 &domain_sid, 1285 1419 &domain_pol); 1286 1287 if (!NT_STATUS_IS_OK(result))1288 goto done;1420 if (!NT_STATUS_IS_OK(status)) { 1421 goto done; 1422 } 1289 1423 1290 1424 /* Open handle on alias */ 1291 1425 1292 result = rpccli_samr_OpenAlias(cli, mem_ctx,1426 status = dcerpc_samr_OpenAlias(b, mem_ctx, 1293 1427 &domain_pol, 1294 1428 access_mask, 1295 1429 alias_rid, 1296 &alias_pol); 1430 &alias_pol, 1431 &result); 1432 if (!NT_STATUS_IS_OK(status)) { 1433 goto done; 1434 } 1297 1435 if (!NT_STATUS_IS_OK(result) && (alias_rid == 0)) { 1298 1436 /* Probably this was a user name, try lookupnames */ … … 1302 1440 init_lsa_String(&lsa_acct_name, argv[2]); 1303 1441 1304 result = rpccli_samr_LookupNames(cli, mem_ctx,1442 status = dcerpc_samr_LookupNames(b, mem_ctx, 1305 1443 &domain_pol, 1306 1444 1, 1307 1445 &lsa_acct_name, 1308 1446 &rids, 1309 &types); 1310 1447 &types, 1448 &result); 1449 if (!NT_STATUS_IS_OK(status)) { 1450 goto done; 1451 } 1311 1452 if (NT_STATUS_IS_OK(result)) { 1312 result = rpccli_samr_OpenAlias(cli, mem_ctx,1453 status = dcerpc_samr_OpenAlias(b, mem_ctx, 1313 1454 &domain_pol, 1314 1455 access_mask, 1315 1456 rids.ids[0], 1316 &alias_pol); 1317 } 1318 } 1319 1320 result = rpccli_samr_DeleteDomAlias(cli, mem_ctx, 1321 &alias_pol); 1322 1323 if (!NT_STATUS_IS_OK(result)) 1324 goto done; 1325 1326 rpccli_samr_Close(cli, mem_ctx, &domain_pol); 1327 rpccli_samr_Close(cli, mem_ctx, &connect_pol); 1457 &alias_pol, 1458 &result); 1459 if (!NT_STATUS_IS_OK(status)) { 1460 goto done; 1461 } 1462 } 1463 } 1464 1465 status = dcerpc_samr_DeleteDomAlias(b, mem_ctx, 1466 &alias_pol, 1467 &result); 1468 if (!NT_STATUS_IS_OK(status)) { 1469 goto done; 1470 } 1471 if (!NT_STATUS_IS_OK(result)) { 1472 status = result; 1473 goto done; 1474 } 1475 1476 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 1477 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1328 1478 done: 1329 return result;1479 return status; 1330 1480 } 1331 1481 … … 1338 1488 { 1339 1489 struct policy_handle connect_pol, domain_pol; 1340 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1490 NTSTATUS status, result; 1341 1491 uint32 start_idx=0, max_entries=250, max_size = 0xffff, num_entries = 0, i; 1342 1492 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; … … 1346 1496 bool got_params = False; /* Use get_query_dispinfo_params() or not? */ 1347 1497 uint32_t total_size, returned_size; 1498 struct dcerpc_binding_handle *b = cli->binding_handle; 1348 1499 1349 1500 if (argc > 6) { … … 1373 1524 /* Get sam policy handle */ 1374 1525 1375 result= rpccli_try_samr_connects(cli, mem_ctx,1526 status = rpccli_try_samr_connects(cli, mem_ctx, 1376 1527 MAXIMUM_ALLOWED_ACCESS, 1377 1528 &connect_pol); 1378 1379 if (!NT_STATUS_IS_OK(result))1380 goto done;1529 if (!NT_STATUS_IS_OK(status)) { 1530 goto done; 1531 } 1381 1532 1382 1533 /* Get domain policy handle */ 1383 1534 1384 result = rpccli_samr_OpenDomain(cli, mem_ctx,1535 status = dcerpc_samr_OpenDomain(b, mem_ctx, 1385 1536 &connect_pol, 1386 1537 access_mask, 1387 1538 &domain_sid, 1388 &domain_pol); 1389 1390 if (!NT_STATUS_IS_OK(result)) 1391 goto done; 1539 &domain_pol, 1540 &result); 1541 if (!NT_STATUS_IS_OK(status)) { 1542 goto done; 1543 } 1544 if (!NT_STATUS_IS_OK(result)) { 1545 status = result; 1546 goto done; 1547 } 1392 1548 1393 1549 /* Query display info */ … … 1396 1552 1397 1553 if (!got_params) 1398 get_query_dispinfo_params(1554 dcerpc_get_query_dispinfo_params( 1399 1555 loop_count, &max_entries, &max_size); 1400 1556 1401 1557 switch (opcode) { 1402 1558 case NDR_SAMR_QUERYDISPLAYINFO: 1403 result = rpccli_samr_QueryDisplayInfo(cli, mem_ctx,1559 status = dcerpc_samr_QueryDisplayInfo(b, mem_ctx, 1404 1560 &domain_pol, 1405 1561 info_level, … … 1409 1565 &total_size, 1410 1566 &returned_size, 1411 &info); 1567 &info, 1568 &result); 1412 1569 break; 1413 1570 case NDR_SAMR_QUERYDISPLAYINFO2: 1414 result = rpccli_samr_QueryDisplayInfo2(cli, mem_ctx,1571 status = dcerpc_samr_QueryDisplayInfo2(b, mem_ctx, 1415 1572 &domain_pol, 1416 1573 info_level, … … 1420 1577 &total_size, 1421 1578 &returned_size, 1422 &info); 1579 &info, 1580 &result); 1423 1581 1424 1582 break; 1425 1583 case NDR_SAMR_QUERYDISPLAYINFO3: 1426 result = rpccli_samr_QueryDisplayInfo3(cli, mem_ctx,1584 status = dcerpc_samr_QueryDisplayInfo3(b, mem_ctx, 1427 1585 &domain_pol, 1428 1586 info_level, … … 1432 1590 &total_size, 1433 1591 &returned_size, 1434 &info); 1592 &info, 1593 &result); 1435 1594 1436 1595 break; … … 1439 1598 } 1440 1599 1600 if (!NT_STATUS_IS_OK(status)) { 1601 break; 1602 } 1603 status = result; 1441 1604 if (!NT_STATUS_IS_OK(result) && 1442 1605 !NT_STATUS_EQUAL(result, NT_STATUS_NO_MORE_ENTRIES) && … … 1493 1656 } while ( NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES)); 1494 1657 1495 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1496 rpccli_samr_Close(cli, mem_ctx, &connect_pol);1658 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 1659 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1497 1660 done: 1498 return result;1661 return status; 1499 1662 } 1500 1663 … … 1530 1693 { 1531 1694 struct policy_handle connect_pol, domain_pol; 1532 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1695 NTSTATUS status, result; 1533 1696 uint32 switch_level = 2; 1534 1697 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 1535 1698 union samr_DomainInfo *info = NULL; 1699 struct dcerpc_binding_handle *b = cli->binding_handle; 1536 1700 1537 1701 if (argc > 3) { … … 1548 1712 /* Get sam policy handle */ 1549 1713 1550 result= rpccli_try_samr_connects(cli, mem_ctx,1714 status = rpccli_try_samr_connects(cli, mem_ctx, 1551 1715 MAXIMUM_ALLOWED_ACCESS, 1552 1716 &connect_pol); 1553 1554 if (!NT_STATUS_IS_OK(result))1555 goto done;1717 if (!NT_STATUS_IS_OK(status)) { 1718 goto done; 1719 } 1556 1720 1557 1721 /* Get domain policy handle */ 1558 1722 1559 result = rpccli_samr_OpenDomain(cli, mem_ctx,1723 status = dcerpc_samr_OpenDomain(b, mem_ctx, 1560 1724 &connect_pol, 1561 1725 access_mask, 1562 1726 &domain_sid, 1563 &domain_pol); 1564 1565 if (!NT_STATUS_IS_OK(result)) 1566 goto done; 1727 &domain_pol, 1728 &result); 1729 if (!NT_STATUS_IS_OK(status)) { 1730 goto done; 1731 } 1732 if (!NT_STATUS_IS_OK(result)) { 1733 status = result; 1734 goto done; 1735 } 1567 1736 1568 1737 /* Query domain info */ 1569 1738 1570 result = rpccli_samr_QueryDomainInfo(cli, mem_ctx,1739 status = dcerpc_samr_QueryDomainInfo(b, mem_ctx, 1571 1740 &domain_pol, 1572 1741 switch_level, 1573 &info); 1574 1575 if (!NT_STATUS_IS_OK(result)) 1576 goto done; 1742 &info, 1743 &result); 1744 if (!NT_STATUS_IS_OK(status)) { 1745 goto done; 1746 } 1747 if (!NT_STATUS_IS_OK(result)) { 1748 status = result; 1749 goto done; 1750 } 1577 1751 1578 1752 /* Display domain info */ … … 1621 1795 done: 1622 1796 1623 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1624 rpccli_samr_Close(cli, mem_ctx, &connect_pol);1625 return result;1797 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 1798 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1799 return status; 1626 1800 } 1627 1801 … … 1633 1807 { 1634 1808 struct policy_handle connect_pol, domain_pol, user_pol; 1635 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1809 NTSTATUS status, result; 1636 1810 struct lsa_String acct_name; 1637 1811 uint32 acb_info; … … 1639 1813 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 1640 1814 uint32_t access_granted = 0; 1815 struct dcerpc_binding_handle *b = cli->binding_handle; 1641 1816 1642 1817 if ((argc < 2) || (argc > 3)) { … … 1652 1827 /* Get sam policy handle */ 1653 1828 1654 result= rpccli_try_samr_connects(cli, mem_ctx,1829 status = rpccli_try_samr_connects(cli, mem_ctx, 1655 1830 MAXIMUM_ALLOWED_ACCESS, 1656 1831 &connect_pol); 1657 1658 if (!NT_STATUS_IS_OK(result))1659 goto done;1832 if (!NT_STATUS_IS_OK(status)) { 1833 goto done; 1834 } 1660 1835 1661 1836 /* Get domain policy handle */ 1662 1837 1663 result = rpccli_samr_OpenDomain(cli, mem_ctx,1838 status = dcerpc_samr_OpenDomain(b, mem_ctx, 1664 1839 &connect_pol, 1665 1840 access_mask, 1666 1841 &domain_sid, 1667 &domain_pol); 1668 1669 if (!NT_STATUS_IS_OK(result)) 1670 goto done; 1842 &domain_pol, 1843 &result); 1844 if (!NT_STATUS_IS_OK(status)) { 1845 goto done; 1846 } 1847 if (!NT_STATUS_IS_OK(result)) { 1848 status = result; 1849 goto done; 1850 } 1671 1851 1672 1852 /* Create domain user */ … … 1679 1859 SAMR_USER_ACCESS_SET_ATTRIBUTES; 1680 1860 1681 result = rpccli_samr_CreateUser2(cli, mem_ctx,1861 status = dcerpc_samr_CreateUser2(b, mem_ctx, 1682 1862 &domain_pol, 1683 1863 &acct_name, … … 1686 1866 &user_pol, 1687 1867 &access_granted, 1688 &user_rid); 1689 1690 if (!NT_STATUS_IS_OK(result)) 1691 goto done; 1692 1693 result = rpccli_samr_Close(cli, mem_ctx, &user_pol); 1694 if (!NT_STATUS_IS_OK(result)) goto done; 1695 1696 result = rpccli_samr_Close(cli, mem_ctx, &domain_pol); 1697 if (!NT_STATUS_IS_OK(result)) goto done; 1698 1699 result = rpccli_samr_Close(cli, mem_ctx, &connect_pol); 1700 if (!NT_STATUS_IS_OK(result)) goto done; 1868 &user_rid, 1869 &result); 1870 if (!NT_STATUS_IS_OK(status)) { 1871 goto done; 1872 } 1873 if (!NT_STATUS_IS_OK(result)) { 1874 status = result; 1875 goto done; 1876 } 1877 1878 status = dcerpc_samr_Close(b, mem_ctx, &user_pol, &result); 1879 if (!NT_STATUS_IS_OK(status)) goto done; 1880 1881 status = dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 1882 if (!NT_STATUS_IS_OK(status)) goto done; 1883 1884 status = dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1885 if (!NT_STATUS_IS_OK(status)) goto done; 1701 1886 1702 1887 done: 1703 return result;1888 return status; 1704 1889 } 1705 1890 … … 1711 1896 { 1712 1897 struct policy_handle connect_pol, domain_pol, group_pol; 1713 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1898 NTSTATUS status, result; 1714 1899 struct lsa_String grp_name; 1715 1900 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 1716 1901 uint32_t rid = 0; 1902 struct dcerpc_binding_handle *b = cli->binding_handle; 1717 1903 1718 1904 if ((argc < 2) || (argc > 3)) { … … 1728 1914 /* Get sam policy handle */ 1729 1915 1730 result= rpccli_try_samr_connects(cli, mem_ctx,1916 status = rpccli_try_samr_connects(cli, mem_ctx, 1731 1917 MAXIMUM_ALLOWED_ACCESS, 1732 1918 &connect_pol); 1733 1734 if (!NT_STATUS_IS_OK(result))1735 goto done;1919 if (!NT_STATUS_IS_OK(status)) { 1920 goto done; 1921 } 1736 1922 1737 1923 /* Get domain policy handle */ 1738 1924 1739 result = rpccli_samr_OpenDomain(cli, mem_ctx,1925 status = dcerpc_samr_OpenDomain(b, mem_ctx, 1740 1926 &connect_pol, 1741 1927 access_mask, 1742 1928 &domain_sid, 1743 &domain_pol); 1744 1745 if (!NT_STATUS_IS_OK(result)) 1746 goto done; 1929 &domain_pol, 1930 &result); 1931 if (!NT_STATUS_IS_OK(status)) { 1932 goto done; 1933 } 1934 if (!NT_STATUS_IS_OK(result)) { 1935 status = result; 1936 goto done; 1937 } 1747 1938 1748 1939 /* Create domain user */ 1749 result = rpccli_samr_CreateDomainGroup(cli, mem_ctx,1940 status = dcerpc_samr_CreateDomainGroup(b, mem_ctx, 1750 1941 &domain_pol, 1751 1942 &grp_name, 1752 1943 MAXIMUM_ALLOWED_ACCESS, 1753 1944 &group_pol, 1754 &rid); 1755 1756 if (!NT_STATUS_IS_OK(result)) 1757 goto done; 1758 1759 result = rpccli_samr_Close(cli, mem_ctx, &group_pol); 1760 if (!NT_STATUS_IS_OK(result)) goto done; 1761 1762 result = rpccli_samr_Close(cli, mem_ctx, &domain_pol); 1763 if (!NT_STATUS_IS_OK(result)) goto done; 1764 1765 result = rpccli_samr_Close(cli, mem_ctx, &connect_pol); 1766 if (!NT_STATUS_IS_OK(result)) goto done; 1945 &rid, 1946 &result); 1947 if (!NT_STATUS_IS_OK(status)) { 1948 goto done; 1949 } 1950 if (!NT_STATUS_IS_OK(result)) { 1951 status = result; 1952 goto done; 1953 } 1954 1955 status = dcerpc_samr_Close(b, mem_ctx, &group_pol, &result); 1956 if (!NT_STATUS_IS_OK(status)) goto done; 1957 1958 status = dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 1959 if (!NT_STATUS_IS_OK(status)) goto done; 1960 1961 status = dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1962 if (!NT_STATUS_IS_OK(status)) goto done; 1767 1963 1768 1964 done: 1769 return result;1965 return status; 1770 1966 } 1771 1967 … … 1777 1973 { 1778 1974 struct policy_handle connect_pol, domain_pol, alias_pol; 1779 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;1975 NTSTATUS status, result; 1780 1976 struct lsa_String alias_name; 1781 1977 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 1782 1978 uint32_t rid = 0; 1979 struct dcerpc_binding_handle *b = cli->binding_handle; 1783 1980 1784 1981 if ((argc < 2) || (argc > 3)) { … … 1794 1991 /* Get sam policy handle */ 1795 1992 1796 result= rpccli_try_samr_connects(cli, mem_ctx,1993 status = rpccli_try_samr_connects(cli, mem_ctx, 1797 1994 MAXIMUM_ALLOWED_ACCESS, 1798 1995 &connect_pol); 1799 1800 if (!NT_STATUS_IS_OK(result))1801 goto done;1996 if (!NT_STATUS_IS_OK(status)) { 1997 goto done; 1998 } 1802 1999 1803 2000 /* Get domain policy handle */ 1804 2001 1805 result = rpccli_samr_OpenDomain(cli, mem_ctx,2002 status = dcerpc_samr_OpenDomain(b, mem_ctx, 1806 2003 &connect_pol, 1807 2004 access_mask, 1808 2005 &domain_sid, 1809 &domain_pol); 1810 1811 if (!NT_STATUS_IS_OK(result)) 1812 goto done; 2006 &domain_pol, 2007 &result); 2008 if (!NT_STATUS_IS_OK(status)) { 2009 goto done; 2010 } 2011 if (!NT_STATUS_IS_OK(result)) { 2012 status = result; 2013 goto done; 2014 } 1813 2015 1814 2016 /* Create domain user */ 1815 2017 1816 result = rpccli_samr_CreateDomAlias(cli, mem_ctx,2018 status = dcerpc_samr_CreateDomAlias(b, mem_ctx, 1817 2019 &domain_pol, 1818 2020 &alias_name, 1819 2021 MAXIMUM_ALLOWED_ACCESS, 1820 2022 &alias_pol, 1821 &rid); 1822 1823 if (!NT_STATUS_IS_OK(result)) 1824 goto done; 1825 1826 result = rpccli_samr_Close(cli, mem_ctx, &alias_pol); 1827 if (!NT_STATUS_IS_OK(result)) goto done; 1828 1829 result = rpccli_samr_Close(cli, mem_ctx, &domain_pol); 1830 if (!NT_STATUS_IS_OK(result)) goto done; 1831 1832 result = rpccli_samr_Close(cli, mem_ctx, &connect_pol); 1833 if (!NT_STATUS_IS_OK(result)) goto done; 2023 &rid, 2024 &result); 2025 if (!NT_STATUS_IS_OK(status)) { 2026 goto done; 2027 } 2028 if (!NT_STATUS_IS_OK(result)) { 2029 status = result; 2030 goto done; 2031 } 2032 2033 2034 status = dcerpc_samr_Close(b, mem_ctx, &alias_pol, &result); 2035 if (!NT_STATUS_IS_OK(status)) goto done; 2036 2037 status = dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2038 if (!NT_STATUS_IS_OK(status)) goto done; 2039 2040 status = dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2041 if (!NT_STATUS_IS_OK(status)) goto done; 1834 2042 1835 2043 done: 1836 return result;2044 return status; 1837 2045 } 1838 2046 … … 1843 2051 int argc, const char **argv) 1844 2052 { 1845 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2053 NTSTATUS status, result; 1846 2054 struct policy_handle connect_pol, domain_pol; 1847 2055 uint32 num_names; 1848 2056 struct samr_Ids rids, name_types; 1849 2057 int i; 1850 struct lsa_String *names = NULL;; 2058 struct lsa_String *names = NULL; 2059 struct dcerpc_binding_handle *b = cli->binding_handle; 1851 2060 1852 2061 if (argc < 3) { … … 1859 2068 /* Get sam policy and domain handles */ 1860 2069 1861 result= rpccli_try_samr_connects(cli, mem_ctx,2070 status = rpccli_try_samr_connects(cli, mem_ctx, 1862 2071 MAXIMUM_ALLOWED_ACCESS, 1863 2072 &connect_pol); 1864 1865 if (!NT_STATUS_IS_OK(result))1866 goto done;1867 1868 result= get_domain_handle(cli, mem_ctx, argv[1],2073 if (!NT_STATUS_IS_OK(status)) { 2074 goto done; 2075 } 2076 2077 status = get_domain_handle(cli, mem_ctx, argv[1], 1869 2078 &connect_pol, 1870 2079 MAXIMUM_ALLOWED_ACCESS, 1871 2080 &domain_sid, 1872 2081 &domain_pol); 1873 1874 if (!NT_STATUS_IS_OK(result))1875 goto done;2082 if (!NT_STATUS_IS_OK(status)) { 2083 goto done; 2084 } 1876 2085 1877 2086 /* Look up names */ … … 1880 2089 1881 2090 if ((names = TALLOC_ARRAY(mem_ctx, struct lsa_String, num_names)) == NULL) { 1882 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1883 rpccli_samr_Close(cli, mem_ctx, &connect_pol);1884 result= NT_STATUS_NO_MEMORY;2091 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2092 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2093 status = NT_STATUS_NO_MEMORY; 1885 2094 goto done; 1886 2095 } … … 1890 2099 } 1891 2100 1892 result = rpccli_samr_LookupNames(cli, mem_ctx,2101 status = dcerpc_samr_LookupNames(b, mem_ctx, 1893 2102 &domain_pol, 1894 2103 num_names, 1895 2104 names, 1896 2105 &rids, 1897 &name_types); 1898 1899 if (!NT_STATUS_IS_OK(result)) 1900 goto done; 2106 &name_types, 2107 &result); 2108 if (!NT_STATUS_IS_OK(status)) { 2109 goto done; 2110 } 2111 if (!NT_STATUS_IS_OK(result)) { 2112 status = result; 2113 goto done; 2114 } 1901 2115 1902 2116 /* Display results */ … … 1906 2120 name_types.ids[i]); 1907 2121 1908 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1909 rpccli_samr_Close(cli, mem_ctx, &connect_pol);2122 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2123 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1910 2124 done: 1911 return result;2125 return status; 1912 2126 } 1913 2127 … … 1918 2132 int argc, const char **argv) 1919 2133 { 1920 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2134 NTSTATUS status, result; 1921 2135 struct policy_handle connect_pol, domain_pol; 1922 2136 uint32_t num_rids, *rids; 1923 2137 struct lsa_Strings names; 1924 2138 struct samr_Ids types; 2139 struct dcerpc_binding_handle *b = cli->binding_handle; 1925 2140 1926 2141 int i; … … 1933 2148 /* Get sam policy and domain handles */ 1934 2149 1935 result= rpccli_try_samr_connects(cli, mem_ctx,2150 status = rpccli_try_samr_connects(cli, mem_ctx, 1936 2151 MAXIMUM_ALLOWED_ACCESS, 1937 2152 &connect_pol); 1938 1939 if (!NT_STATUS_IS_OK(result))1940 goto done;1941 1942 result= get_domain_handle(cli, mem_ctx, argv[1],2153 if (!NT_STATUS_IS_OK(status)) { 2154 goto done; 2155 } 2156 2157 status = get_domain_handle(cli, mem_ctx, argv[1], 1943 2158 &connect_pol, 1944 2159 MAXIMUM_ALLOWED_ACCESS, 1945 2160 &domain_sid, 1946 2161 &domain_pol); 1947 1948 if (!NT_STATUS_IS_OK(result))1949 goto done;2162 if (!NT_STATUS_IS_OK(status)) { 2163 goto done; 2164 } 1950 2165 1951 2166 /* Look up rids */ … … 1954 2169 1955 2170 if ((rids = TALLOC_ARRAY(mem_ctx, uint32, num_rids)) == NULL) { 1956 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1957 rpccli_samr_Close(cli, mem_ctx, &connect_pol);1958 result= NT_STATUS_NO_MEMORY;2171 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2172 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2173 status = NT_STATUS_NO_MEMORY; 1959 2174 goto done; 1960 2175 } … … 1963 2178 sscanf(argv[i + 2], "%i", &rids[i]); 1964 2179 1965 result = rpccli_samr_LookupRids(cli, mem_ctx,2180 status = dcerpc_samr_LookupRids(b, mem_ctx, 1966 2181 &domain_pol, 1967 2182 num_rids, 1968 2183 rids, 1969 2184 &names, 1970 &types); 1971 2185 &types, 2186 &result); 2187 if (!NT_STATUS_IS_OK(status)) { 2188 goto done; 2189 } 2190 status = result; 1972 2191 if (!NT_STATUS_IS_OK(result) && 1973 2192 !NT_STATUS_EQUAL(result, STATUS_SOME_UNMAPPED)) … … 1981 2200 } 1982 2201 1983 rpccli_samr_Close(cli, mem_ctx, &domain_pol);1984 rpccli_samr_Close(cli, mem_ctx, &connect_pol);2202 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2203 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 1985 2204 done: 1986 return result;2205 return status; 1987 2206 } 1988 2207 … … 1993 2212 int argc, const char **argv) 1994 2213 { 1995 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2214 NTSTATUS status, result; 1996 2215 struct policy_handle connect_pol, domain_pol, group_pol; 1997 2216 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 2217 struct dcerpc_binding_handle *b = cli->binding_handle; 1998 2218 1999 2219 if ((argc < 2) || (argc > 3)) { … … 2007 2227 /* Get sam policy and domain handles */ 2008 2228 2009 result= rpccli_try_samr_connects(cli, mem_ctx,2229 status = rpccli_try_samr_connects(cli, mem_ctx, 2010 2230 MAXIMUM_ALLOWED_ACCESS, 2011 2231 &connect_pol); 2012 2013 if (!NT_STATUS_IS_OK(result))2014 goto done;2015 2016 result = rpccli_samr_OpenDomain(cli, mem_ctx,2232 if (!NT_STATUS_IS_OK(status)) { 2233 goto done; 2234 } 2235 2236 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2017 2237 &connect_pol, 2018 2238 MAXIMUM_ALLOWED_ACCESS, 2019 2239 &domain_sid, 2020 &domain_pol); 2021 2022 if (!NT_STATUS_IS_OK(result)) 2023 goto done; 2240 &domain_pol, 2241 &result); 2242 if (!NT_STATUS_IS_OK(status)) { 2243 goto done; 2244 } 2245 if (!NT_STATUS_IS_OK(result)) { 2246 status = result; 2247 goto done; 2248 } 2024 2249 2025 2250 /* Get handle on group */ … … 2031 2256 init_lsa_String(&lsa_acct_name, argv[1]); 2032 2257 2033 result = rpccli_samr_LookupNames(cli, mem_ctx,2258 status = dcerpc_samr_LookupNames(b, mem_ctx, 2034 2259 &domain_pol, 2035 2260 1, 2036 2261 &lsa_acct_name, 2037 2262 &group_rids, 2038 &name_types); 2039 if (!NT_STATUS_IS_OK(result)) 2263 &name_types, 2264 &result); 2265 if (!NT_STATUS_IS_OK(status)) { 2040 2266 goto done; 2041 2042 result = rpccli_samr_OpenGroup(cli, mem_ctx, 2267 } 2268 if (!NT_STATUS_IS_OK(result)) { 2269 status = result; 2270 goto done; 2271 } 2272 2273 status = dcerpc_samr_OpenGroup(b, mem_ctx, 2043 2274 &domain_pol, 2044 2275 access_mask, 2045 2276 group_rids.ids[0], 2046 &group_pol );2047 2048 if (!NT_STATUS_IS_OK( result))2277 &group_pol, 2278 &result); 2279 if (!NT_STATUS_IS_OK(status)) { 2049 2280 goto done; 2281 } 2282 if (!NT_STATUS_IS_OK(result)) { 2283 status = result; 2284 goto done; 2285 } 2050 2286 } 2051 2287 2052 2288 /* Delete group */ 2053 2289 2054 result = rpccli_samr_DeleteDomainGroup(cli, mem_ctx, 2055 &group_pol); 2056 2057 if (!NT_STATUS_IS_OK(result)) 2058 goto done; 2290 status = dcerpc_samr_DeleteDomainGroup(b, mem_ctx, 2291 &group_pol, 2292 &result); 2293 if (!NT_STATUS_IS_OK(status)) { 2294 goto done; 2295 } 2296 if (!NT_STATUS_IS_OK(result)) { 2297 status = result; 2298 goto done; 2299 } 2059 2300 2060 2301 /* Display results */ 2061 2302 2062 rpccli_samr_Close(cli, mem_ctx, &group_pol);2063 rpccli_samr_Close(cli, mem_ctx, &domain_pol);2064 rpccli_samr_Close(cli, mem_ctx, &connect_pol);2303 dcerpc_samr_Close(b, mem_ctx, &group_pol, &result); 2304 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2305 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2065 2306 2066 2307 done: 2067 return result;2308 return status; 2068 2309 } 2069 2310 … … 2074 2315 int argc, const char **argv) 2075 2316 { 2076 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2317 NTSTATUS status, result; 2077 2318 struct policy_handle connect_pol, domain_pol, user_pol; 2078 2319 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 2320 struct dcerpc_binding_handle *b = cli->binding_handle; 2079 2321 2080 2322 if ((argc < 2) || (argc > 3)) { … … 2088 2330 /* Get sam policy and domain handles */ 2089 2331 2090 result= rpccli_try_samr_connects(cli, mem_ctx,2332 status = rpccli_try_samr_connects(cli, mem_ctx, 2091 2333 MAXIMUM_ALLOWED_ACCESS, 2092 2334 &connect_pol); 2093 2094 if (!NT_STATUS_IS_OK(result))2095 goto done;2096 2097 result = rpccli_samr_OpenDomain(cli, mem_ctx,2335 if (!NT_STATUS_IS_OK(status)) { 2336 goto done; 2337 } 2338 2339 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2098 2340 &connect_pol, 2099 2341 MAXIMUM_ALLOWED_ACCESS, 2100 2342 &domain_sid, 2101 &domain_pol); 2102 2103 if (!NT_STATUS_IS_OK(result)) 2104 goto done; 2343 &domain_pol, 2344 &result); 2345 if (!NT_STATUS_IS_OK(status)) { 2346 goto done; 2347 } 2348 if (!NT_STATUS_IS_OK(result)) { 2349 status = result; 2350 goto done; 2351 } 2105 2352 2106 2353 /* Get handle on user */ … … 2112 2359 init_lsa_String(&lsa_acct_name, argv[1]); 2113 2360 2114 result = rpccli_samr_LookupNames(cli, mem_ctx,2361 status = dcerpc_samr_LookupNames(b, mem_ctx, 2115 2362 &domain_pol, 2116 2363 1, 2117 2364 &lsa_acct_name, 2118 2365 &user_rids, 2119 &name_types );2120 2121 if (!NT_STATUS_IS_OK( result))2366 &name_types, 2367 &result); 2368 if (!NT_STATUS_IS_OK(status)) { 2122 2369 goto done; 2123 2124 result = rpccli_samr_OpenUser(cli, mem_ctx, 2370 } 2371 if (!NT_STATUS_IS_OK(result)) { 2372 status = result; 2373 goto done; 2374 } 2375 2376 status = dcerpc_samr_OpenUser(b, mem_ctx, 2125 2377 &domain_pol, 2126 2378 access_mask, 2127 2379 user_rids.ids[0], 2128 &user_pol );2129 2130 if (!NT_STATUS_IS_OK( result))2380 &user_pol, 2381 &result); 2382 if (!NT_STATUS_IS_OK(status)) { 2131 2383 goto done; 2384 } 2385 if (!NT_STATUS_IS_OK(result)) { 2386 status = result; 2387 goto done; 2388 } 2132 2389 } 2133 2390 2134 2391 /* Delete user */ 2135 2392 2136 result = rpccli_samr_DeleteUser(cli, mem_ctx, 2137 &user_pol); 2138 2139 if (!NT_STATUS_IS_OK(result)) 2140 goto done; 2393 status = dcerpc_samr_DeleteUser(b, mem_ctx, 2394 &user_pol, 2395 &result); 2396 if (!NT_STATUS_IS_OK(status)) { 2397 goto done; 2398 } 2399 if (!NT_STATUS_IS_OK(result)) { 2400 status = result; 2401 goto done; 2402 } 2141 2403 2142 2404 /* Display results */ 2143 2405 2144 rpccli_samr_Close(cli, mem_ctx, &user_pol);2145 rpccli_samr_Close(cli, mem_ctx, &domain_pol);2146 rpccli_samr_Close(cli, mem_ctx, &connect_pol);2406 dcerpc_samr_Close(b, mem_ctx, &user_pol, &result); 2407 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2408 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2147 2409 2148 2410 done: 2149 return result;2411 return status; 2150 2412 } 2151 2413 … … 2158 2420 { 2159 2421 struct policy_handle connect_pol, domain_pol, user_pol, *pol; 2160 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2161 uint32 sec_info = DACL_SECURITY_INFORMATION;2422 NTSTATUS status, result; 2423 uint32 sec_info = SECINFO_DACL; 2162 2424 uint32 user_rid = 0; 2163 2425 TALLOC_CTX *ctx = NULL; 2164 SEC_DESC_BUF*sec_desc_buf=NULL;2426 struct sec_desc_buf *sec_desc_buf=NULL; 2165 2427 bool domain = False; 2428 struct dcerpc_binding_handle *b = cli->binding_handle; 2166 2429 2167 2430 ctx=talloc_init("cmd_samr_query_sec_obj"); … … 2185 2448 } 2186 2449 2187 result= rpccli_try_samr_connects(cli, mem_ctx,2450 status = rpccli_try_samr_connects(cli, mem_ctx, 2188 2451 MAXIMUM_ALLOWED_ACCESS, 2189 2452 &connect_pol); 2190 2191 if (!NT_STATUS_IS_OK(result))2192 goto done;2193 2194 if (domain || user_rid) 2195 result = rpccli_samr_OpenDomain(cli, mem_ctx,2453 if (!NT_STATUS_IS_OK(status)) { 2454 goto done; 2455 } 2456 2457 if (domain || user_rid) { 2458 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2196 2459 &connect_pol, 2197 2460 MAXIMUM_ALLOWED_ACCESS, 2198 2461 &domain_sid, 2199 &domain_pol); 2200 2201 if (!NT_STATUS_IS_OK(result)) 2202 goto done; 2203 2204 if (user_rid) 2205 result = rpccli_samr_OpenUser(cli, mem_ctx, 2462 &domain_pol, 2463 &result); 2464 if (!NT_STATUS_IS_OK(status)) { 2465 goto done; 2466 } 2467 if (!NT_STATUS_IS_OK(result)) { 2468 status = result; 2469 goto done; 2470 } 2471 } 2472 2473 if (user_rid) { 2474 status = dcerpc_samr_OpenUser(b, mem_ctx, 2206 2475 &domain_pol, 2207 2476 MAXIMUM_ALLOWED_ACCESS, 2208 2477 user_rid, 2209 &user_pol); 2210 2211 if (!NT_STATUS_IS_OK(result)) 2212 goto done; 2478 &user_pol, 2479 &result); 2480 if (!NT_STATUS_IS_OK(status)) { 2481 goto done; 2482 } 2483 if (!NT_STATUS_IS_OK(result)) { 2484 status = result; 2485 goto done; 2486 } 2487 } 2213 2488 2214 2489 /* Pick which query pol to use */ … … 2224 2499 /* Query SAM security object */ 2225 2500 2226 result = rpccli_samr_QuerySecurity(cli, mem_ctx,2501 status = dcerpc_samr_QuerySecurity(b, mem_ctx, 2227 2502 pol, 2228 2503 sec_info, 2229 &sec_desc_buf); 2230 2231 if (!NT_STATUS_IS_OK(result)) 2232 goto done; 2504 &sec_desc_buf, 2505 &result); 2506 if (!NT_STATUS_IS_OK(status)) { 2507 goto done; 2508 } 2509 if (!NT_STATUS_IS_OK(result)) { 2510 status = result; 2511 goto done; 2512 } 2233 2513 2234 2514 display_sec_desc(sec_desc_buf->sd); 2235 2515 2236 rpccli_samr_Close(cli, mem_ctx, &user_pol);2237 rpccli_samr_Close(cli, mem_ctx, &domain_pol);2238 rpccli_samr_Close(cli, mem_ctx, &connect_pol);2516 dcerpc_samr_Close(b, mem_ctx, &user_pol, &result); 2517 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2518 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2239 2519 done: 2240 2520 talloc_destroy(ctx); 2241 return result;2521 return status; 2242 2522 } 2243 2523 … … 2246 2526 int argc, const char **argv) 2247 2527 { 2248 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2528 NTSTATUS status, result; 2249 2529 struct policy_handle connect_pol, domain_pol, user_pol; 2250 2530 struct samr_PwInfo info; 2251 2531 uint32_t rid; 2532 struct dcerpc_binding_handle *b = cli->binding_handle; 2252 2533 2253 2534 if (argc != 2) { … … 2258 2539 sscanf(argv[1], "%i", &rid); 2259 2540 2260 result= rpccli_try_samr_connects(cli, mem_ctx,2541 status = rpccli_try_samr_connects(cli, mem_ctx, 2261 2542 MAXIMUM_ALLOWED_ACCESS, 2262 2543 &connect_pol); 2263 2264 if (!NT_STATUS_IS_OK(result)) { 2265 goto done; 2266 } 2267 2268 result = rpccli_samr_OpenDomain(cli, mem_ctx, 2544 if (!NT_STATUS_IS_OK(status)) { 2545 goto done; 2546 } 2547 2548 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2269 2549 &connect_pol, 2270 2550 MAXIMUM_ALLOWED_ACCESS, 2271 2551 &domain_sid, 2272 &domain_pol); 2273 2274 if (!NT_STATUS_IS_OK(result)) { 2275 goto done; 2276 } 2277 2278 result = rpccli_samr_OpenUser(cli, mem_ctx, 2552 &domain_pol, 2553 &result); 2554 if (!NT_STATUS_IS_OK(status)) { 2555 goto done; 2556 } 2557 if (!NT_STATUS_IS_OK(result)) { 2558 status = result; 2559 goto done; 2560 } 2561 2562 status = dcerpc_samr_OpenUser(b, mem_ctx, 2279 2563 &domain_pol, 2280 2564 MAXIMUM_ALLOWED_ACCESS, 2281 2565 rid, 2282 &user_pol); 2283 2284 if (!NT_STATUS_IS_OK(result)) { 2285 goto done; 2286 } 2287 2288 result = rpccli_samr_GetUserPwInfo(cli, mem_ctx, &user_pol, &info); 2566 &user_pol, 2567 &result); 2568 if (!NT_STATUS_IS_OK(status)) { 2569 goto done; 2570 } 2571 if (!NT_STATUS_IS_OK(result)) { 2572 status = result; 2573 goto done; 2574 } 2575 2576 status = dcerpc_samr_GetUserPwInfo(b, mem_ctx, 2577 &user_pol, 2578 &info, 2579 &result); 2580 if (!NT_STATUS_IS_OK(status)) { 2581 goto done; 2582 } 2583 status = result; 2289 2584 if (NT_STATUS_IS_OK(result)) { 2290 2585 printf("min_password_length: %d\n", info.min_password_length); … … 2295 2590 2296 2591 done: 2297 rpccli_samr_Close(cli, mem_ctx, &user_pol);2298 rpccli_samr_Close(cli, mem_ctx, &domain_pol);2299 rpccli_samr_Close(cli, mem_ctx, &connect_pol);2300 2301 return result;2592 dcerpc_samr_Close(b, mem_ctx, &user_pol, &result); 2593 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2594 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2595 2596 return status; 2302 2597 } 2303 2598 … … 2306 2601 int argc, const char **argv) 2307 2602 { 2308 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2603 NTSTATUS status, result; 2309 2604 struct lsa_String domain_name; 2310 2605 struct samr_PwInfo info; 2606 struct dcerpc_binding_handle *b = cli->binding_handle; 2311 2607 2312 2608 if (argc < 1 || argc > 3) { … … 2317 2613 init_lsa_String(&domain_name, argv[1]); 2318 2614 2319 result = rpccli_samr_GetDomPwInfo(cli, mem_ctx, &domain_name, &info); 2320 2615 status = dcerpc_samr_GetDomPwInfo(b, mem_ctx, 2616 &domain_name, 2617 &info, 2618 &result); 2619 if (!NT_STATUS_IS_OK(status)) { 2620 return status; 2621 } 2321 2622 if (NT_STATUS_IS_OK(result)) { 2322 2623 printf("min_password_length: %d\n", info.min_password_length); … … 2334 2635 { 2335 2636 struct policy_handle connect_pol, domain_pol; 2336 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2637 NTSTATUS status, result; 2337 2638 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 2338 2639 fstring sid_string; 2339 2640 struct lsa_String domain_name; 2340 DOM_SID *sid = NULL; 2641 struct dom_sid *sid = NULL; 2642 struct dcerpc_binding_handle *b = cli->binding_handle; 2341 2643 2342 2644 if (argc != 2) { … … 2347 2649 init_lsa_String(&domain_name, argv[1]); 2348 2650 2349 result= rpccli_try_samr_connects(cli, mem_ctx,2651 status = rpccli_try_samr_connects(cli, mem_ctx, 2350 2652 access_mask, 2351 2653 &connect_pol); 2352 2353 if (!NT_STATUS_IS_OK(result))2354 goto done;2355 2356 result = rpccli_samr_OpenDomain(cli, mem_ctx,2654 if (!NT_STATUS_IS_OK(status)) { 2655 goto done; 2656 } 2657 2658 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2357 2659 &connect_pol, 2358 2660 access_mask, 2359 2661 &domain_sid, 2360 &domain_pol); 2361 2362 if (!NT_STATUS_IS_OK(result)) 2363 goto done; 2364 2365 result = rpccli_samr_LookupDomain(cli, mem_ctx, 2662 &domain_pol, 2663 &result); 2664 if (!NT_STATUS_IS_OK(status)) { 2665 goto done; 2666 } 2667 if (!NT_STATUS_IS_OK(result)) { 2668 status = result; 2669 goto done; 2670 } 2671 2672 status = dcerpc_samr_LookupDomain(b, mem_ctx, 2366 2673 &connect_pol, 2367 2674 &domain_name, 2368 &sid); 2675 &sid, 2676 &result); 2677 if (!NT_STATUS_IS_OK(status)) { 2678 goto done; 2679 } 2680 if (!NT_STATUS_IS_OK(result)) { 2681 status = result; 2682 goto done; 2683 } 2369 2684 2370 2685 if (NT_STATUS_IS_OK(result)) { … … 2374 2689 } 2375 2690 2376 rpccli_samr_Close(cli, mem_ctx, &domain_pol);2377 rpccli_samr_Close(cli, mem_ctx, &connect_pol);2691 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2692 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2378 2693 done: 2379 return result;2694 return status; 2380 2695 } 2381 2696 … … 2387 2702 { 2388 2703 struct policy_handle connect_pol, domain_pol, user_pol; 2389 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2704 NTSTATUS status, result; 2390 2705 const char *user, *oldpass, *newpass; 2391 2706 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 2392 2707 struct samr_Ids rids, types; 2393 2708 struct lsa_String lsa_acct_name; 2709 struct dcerpc_binding_handle *b = cli->binding_handle; 2394 2710 2395 2711 if (argc < 3) { … … 2404 2720 /* Get sam policy handle */ 2405 2721 2406 result= rpccli_try_samr_connects(cli, mem_ctx,2722 status = rpccli_try_samr_connects(cli, mem_ctx, 2407 2723 MAXIMUM_ALLOWED_ACCESS, 2408 2724 &connect_pol); 2409 2410 if (!NT_STATUS_IS_OK(result)) { 2725 if (!NT_STATUS_IS_OK(status)) { 2411 2726 goto done; 2412 2727 } … … 2414 2729 /* Get domain policy handle */ 2415 2730 2416 result = rpccli_samr_OpenDomain(cli, mem_ctx,2731 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2417 2732 &connect_pol, 2418 2733 access_mask, 2419 2734 &domain_sid, 2420 &domain_pol); 2421 2422 if (!NT_STATUS_IS_OK(result)) { 2735 &domain_pol, 2736 &result); 2737 if (!NT_STATUS_IS_OK(status)) { 2738 goto done; 2739 } 2740 if (!NT_STATUS_IS_OK(result)) { 2741 status = result; 2423 2742 goto done; 2424 2743 } … … 2426 2745 init_lsa_String(&lsa_acct_name, user); 2427 2746 2428 result = rpccli_samr_LookupNames(cli, mem_ctx,2747 status = dcerpc_samr_LookupNames(b, mem_ctx, 2429 2748 &domain_pol, 2430 2749 1, 2431 2750 &lsa_acct_name, 2432 2751 &rids, 2433 &types); 2434 2435 if (!NT_STATUS_IS_OK(result)) { 2436 goto done; 2437 } 2438 2439 result = rpccli_samr_OpenUser(cli, mem_ctx, 2752 &types, 2753 &result); 2754 if (!NT_STATUS_IS_OK(status)) { 2755 goto done; 2756 } 2757 if (!NT_STATUS_IS_OK(result)) { 2758 status = result; 2759 goto done; 2760 } 2761 2762 status = dcerpc_samr_OpenUser(b, mem_ctx, 2440 2763 &domain_pol, 2441 2764 access_mask, 2442 2765 rids.ids[0], 2443 &user_pol); 2444 2445 if (!NT_STATUS_IS_OK(result)) { 2766 &user_pol, 2767 &result); 2768 if (!NT_STATUS_IS_OK(status)) { 2769 goto done; 2770 } 2771 if (!NT_STATUS_IS_OK(result)) { 2772 status = result; 2446 2773 goto done; 2447 2774 } 2448 2775 2449 2776 /* Change user password */ 2450 result= rpccli_samr_chgpasswd_user(cli, mem_ctx,2777 status = rpccli_samr_chgpasswd_user(cli, mem_ctx, 2451 2778 &user_pol, 2452 2779 newpass, 2453 2780 oldpass); 2454 2455 if (!NT_STATUS_IS_OK(result)) { 2781 if (!NT_STATUS_IS_OK(status)) { 2456 2782 goto done; 2457 2783 } … … 2459 2785 done: 2460 2786 if (is_valid_policy_hnd(&user_pol)) { 2461 rpccli_samr_Close(cli, mem_ctx, &user_pol);2787 dcerpc_samr_Close(b, mem_ctx, &user_pol, &result); 2462 2788 } 2463 2789 if (is_valid_policy_hnd(&domain_pol)) { 2464 rpccli_samr_Close(cli, mem_ctx, &domain_pol);2790 dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2465 2791 } 2466 2792 if (is_valid_policy_hnd(&connect_pol)) { 2467 rpccli_samr_Close(cli, mem_ctx, &connect_pol);2468 } 2469 2470 return result;2793 dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2794 } 2795 2796 return status; 2471 2797 } 2472 2798 … … 2479 2805 { 2480 2806 struct policy_handle connect_pol, domain_pol; 2481 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2807 NTSTATUS status, result; 2482 2808 const char *user, *oldpass, *newpass; 2483 2809 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 2810 struct dcerpc_binding_handle *b = cli->binding_handle; 2484 2811 2485 2812 if (argc < 3) { … … 2494 2821 /* Get sam policy handle */ 2495 2822 2496 result= rpccli_try_samr_connects(cli, mem_ctx,2823 status = rpccli_try_samr_connects(cli, mem_ctx, 2497 2824 MAXIMUM_ALLOWED_ACCESS, 2498 2825 &connect_pol); 2499 2500 if (!NT_STATUS_IS_OK(result))2501 goto done;2826 if (!NT_STATUS_IS_OK(status)) { 2827 goto done; 2828 } 2502 2829 2503 2830 /* Get domain policy handle */ 2504 2831 2505 result = rpccli_samr_OpenDomain(cli, mem_ctx,2832 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2506 2833 &connect_pol, 2507 2834 access_mask, 2508 2835 &domain_sid, 2509 &domain_pol); 2510 2511 if (!NT_STATUS_IS_OK(result)) 2512 goto done; 2836 &domain_pol, 2837 &result); 2838 if (!NT_STATUS_IS_OK(status)) { 2839 goto done; 2840 } 2841 if (!NT_STATUS_IS_OK(result)) { 2842 status = result; 2843 goto done; 2844 } 2513 2845 2514 2846 /* Change user password */ 2515 result = rpccli_samr_chgpasswd_user2(cli, mem_ctx, user, newpass, oldpass); 2516 2517 if (!NT_STATUS_IS_OK(result)) 2518 goto done; 2519 2520 result = rpccli_samr_Close(cli, mem_ctx, &domain_pol); 2521 if (!NT_STATUS_IS_OK(result)) goto done; 2522 2523 result = rpccli_samr_Close(cli, mem_ctx, &connect_pol); 2524 if (!NT_STATUS_IS_OK(result)) goto done; 2847 status = rpccli_samr_chgpasswd_user2(cli, mem_ctx, user, newpass, oldpass); 2848 2849 if (!NT_STATUS_IS_OK(status)) { 2850 goto done; 2851 } 2852 2853 status = dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2854 if (!NT_STATUS_IS_OK(status)) goto done; 2855 2856 status = dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2857 if (!NT_STATUS_IS_OK(status)) goto done; 2525 2858 2526 2859 done: 2527 return result;2860 return status; 2528 2861 } 2529 2862 … … 2536 2869 { 2537 2870 struct policy_handle connect_pol, domain_pol; 2538 NTSTATUS result = NT_STATUS_UNSUCCESSFUL;2871 NTSTATUS status, result; 2539 2872 const char *user, *oldpass, *newpass; 2540 2873 uint32 access_mask = MAXIMUM_ALLOWED_ACCESS; 2541 2874 struct samr_DomInfo1 *info = NULL; 2542 struct samr_ChangeReject *reject = NULL; 2875 struct userPwdChangeFailureInformation *reject = NULL; 2876 struct dcerpc_binding_handle *b = cli->binding_handle; 2543 2877 2544 2878 if (argc < 3) { … … 2553 2887 /* Get sam policy handle */ 2554 2888 2555 result= rpccli_try_samr_connects(cli, mem_ctx,2889 status = rpccli_try_samr_connects(cli, mem_ctx, 2556 2890 MAXIMUM_ALLOWED_ACCESS, 2557 2891 &connect_pol); 2558 2559 if (!NT_STATUS_IS_OK(result))2560 goto done;2892 if (!NT_STATUS_IS_OK(status)) { 2893 goto done; 2894 } 2561 2895 2562 2896 /* Get domain policy handle */ 2563 2897 2564 result = rpccli_samr_OpenDomain(cli, mem_ctx,2898 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2565 2899 &connect_pol, 2566 2900 access_mask, 2567 2901 &domain_sid, 2568 &domain_pol); 2569 2570 if (!NT_STATUS_IS_OK(result)) 2571 goto done; 2902 &domain_pol, 2903 &result); 2904 if (!NT_STATUS_IS_OK(status)) { 2905 goto done; 2906 } 2907 if (!NT_STATUS_IS_OK(result)) { 2908 status = result; 2909 goto done; 2910 } 2572 2911 2573 2912 /* Change user password */ 2574 result= rpccli_samr_chgpasswd_user3(cli, mem_ctx,2913 status = rpccli_samr_chgpasswd_user3(cli, mem_ctx, 2575 2914 user, 2576 2915 newpass, … … 2578 2917 &info, 2579 2918 &reject); 2919 if (!NT_STATUS_IS_OK(status)) { 2920 goto done; 2921 } 2580 2922 2581 2923 if (NT_STATUS_EQUAL(result, NT_STATUS_PASSWORD_RESTRICTION)) { … … 2583 2925 display_sam_dom_info_1(info); 2584 2926 2585 switch (reject-> reason) {2586 case SAM R_REJECT_TOO_SHORT:2587 d_printf("SAM R_REJECT_TOO_SHORT\n");2927 switch (reject->extendedFailureReason) { 2928 case SAM_PWD_CHANGE_PASSWORD_TOO_SHORT: 2929 d_printf("SAM_PWD_CHANGE_PASSWORD_TOO_SHORT\n"); 2588 2930 break; 2589 case SAM R_REJECT_IN_HISTORY:2590 d_printf("SAM R_REJECT_IN_HISTORY\n");2931 case SAM_PWD_CHANGE_PWD_IN_HISTORY: 2932 d_printf("SAM_PWD_CHANGE_PWD_IN_HISTORY\n"); 2591 2933 break; 2592 case SAMR_REJECT_COMPLEXITY: 2593 d_printf("SAMR_REJECT_COMPLEXITY\n"); 2594 break; 2595 case SAMR_REJECT_OTHER: 2596 d_printf("SAMR_REJECT_OTHER\n"); 2934 case SAM_PWD_CHANGE_NOT_COMPLEX: 2935 d_printf("SAM_PWD_CHANGE_NOT_COMPLEX\n"); 2597 2936 break; 2598 2937 default: 2599 2938 d_printf("unknown reject reason: %d\n", 2600 reject-> reason);2939 reject->extendedFailureReason); 2601 2940 break; 2602 2941 } 2603 2942 } 2604 2943 2605 if (!NT_STATUS_IS_OK(result)) 2606 goto done; 2607 2608 result = rpccli_samr_Close(cli, mem_ctx, &domain_pol); 2609 if (!NT_STATUS_IS_OK(result)) goto done; 2610 2611 result = rpccli_samr_Close(cli, mem_ctx, &connect_pol); 2612 if (!NT_STATUS_IS_OK(result)) goto done; 2944 if (!NT_STATUS_IS_OK(result)) { 2945 status = result; 2946 goto done; 2947 } 2948 2949 status = dcerpc_samr_Close(b, mem_ctx, &domain_pol, &result); 2950 if (!NT_STATUS_IS_OK(status)) goto done; 2951 2952 status = dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result); 2953 if (!NT_STATUS_IS_OK(status)) goto done; 2613 2954 2614 2955 done: 2615 return result;2956 return status; 2616 2957 } 2617 2958 … … 2622 2963 { 2623 2964 struct policy_handle connect_pol, domain_pol, user_pol; 2624 NTSTATUS status = NT_STATUS_UNSUCCESSFUL;2965 NTSTATUS status, result; 2625 2966 const char *user, *param; 2626 2967 uint32_t access_mask = MAXIMUM_ALLOWED_ACCESS; … … 2634 2975 DATA_BLOB session_key; 2635 2976 uint8_t password_expired = 0; 2977 struct dcerpc_binding_handle *b = cli->binding_handle; 2636 2978 2637 2979 if (argc < 4) { … … 2763 3105 MAXIMUM_ALLOWED_ACCESS, 2764 3106 &connect_pol); 2765 2766 if (!NT_STATUS_IS_OK(status))2767 goto done;3107 if (!NT_STATUS_IS_OK(status)) { 3108 goto done; 3109 } 2768 3110 2769 3111 /* Get domain policy handle */ 2770 3112 2771 status = rpccli_samr_OpenDomain(cli, mem_ctx,3113 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2772 3114 &connect_pol, 2773 3115 access_mask, 2774 3116 &domain_sid, 2775 &domain_pol); 3117 &domain_pol, 3118 &result); 2776 3119 2777 3120 if (!NT_STATUS_IS_OK(status)) 2778 3121 goto done; 3122 if (!NT_STATUS_IS_OK(result)) { 3123 status = result; 3124 goto done; 3125 } 2779 3126 2780 3127 user_rid = strtol(user, NULL, 0); 2781 3128 if (user_rid) { 2782 status = rpccli_samr_OpenUser(cli, mem_ctx,3129 status = dcerpc_samr_OpenUser(b, mem_ctx, 2783 3130 &domain_pol, 2784 3131 access_mask, 2785 3132 user_rid, 2786 &user_pol); 3133 &user_pol, 3134 &result); 3135 if (!NT_STATUS_IS_OK(status)) { 3136 goto done; 3137 } 3138 3139 status = result; 2787 3140 } 2788 3141 … … 2796 3149 init_lsa_String(&lsa_acct_name, user); 2797 3150 2798 status = rpccli_samr_LookupNames(cli, mem_ctx,3151 status = dcerpc_samr_LookupNames(b, mem_ctx, 2799 3152 &domain_pol, 2800 3153 1, 2801 3154 &lsa_acct_name, 2802 3155 &rids, 2803 &types); 3156 &types, 3157 &result); 2804 3158 if (!NT_STATUS_IS_OK(status)) { 2805 3159 return status; 2806 3160 } 2807 2808 status = rpccli_samr_OpenUser(cli, mem_ctx, 3161 if (!NT_STATUS_IS_OK(result)) { 3162 return result; 3163 } 3164 3165 3166 status = dcerpc_samr_OpenUser(b, mem_ctx, 2809 3167 &domain_pol, 2810 3168 access_mask, 2811 3169 rids.ids[0], 2812 &user_pol); 3170 &user_pol, 3171 &result); 2813 3172 if (!NT_STATUS_IS_OK(status)) { 2814 3173 return status; 2815 3174 } 3175 if (!NT_STATUS_IS_OK(result)) { 3176 return result; 3177 } 2816 3178 } 2817 3179 2818 3180 switch (opcode) { 2819 3181 case NDR_SAMR_SETUSERINFO: 2820 status = rpccli_samr_SetUserInfo(cli, mem_ctx,3182 status = dcerpc_samr_SetUserInfo(b, mem_ctx, 2821 3183 &user_pol, 2822 3184 level, 2823 &info); 3185 &info, 3186 &result); 2824 3187 break; 2825 3188 case NDR_SAMR_SETUSERINFO2: 2826 status = rpccli_samr_SetUserInfo2(cli, mem_ctx,3189 status = dcerpc_samr_SetUserInfo2(b, mem_ctx, 2827 3190 &user_pol, 2828 3191 level, 2829 &info); 3192 &info, 3193 &result); 2830 3194 break; 2831 3195 default: 2832 3196 return NT_STATUS_INVALID_PARAMETER; 2833 3197 } 2834 3198 if (!NT_STATUS_IS_OK(status)) { 3199 DEBUG(0,("status: %s\n", nt_errstr(status))); 3200 goto done; 3201 } 3202 if (!NT_STATUS_IS_OK(result)) { 3203 status = result; 3204 DEBUG(0,("result: %s\n", nt_errstr(status))); 3205 goto done; 3206 } 2835 3207 done: 2836 3208 return status; … … 2857 3229 int argc, const char **argv) 2858 3230 { 2859 NTSTATUS status ;3231 NTSTATUS status, result; 2860 3232 struct policy_handle connect_handle; 2861 3233 struct policy_handle domain_handle; … … 2863 3235 struct lsa_String name; 2864 3236 uint32_t idx = 0; 3237 struct dcerpc_binding_handle *b = cli->binding_handle; 2865 3238 2866 3239 if (argc < 2 || argc > 3) { … … 2878 3251 SEC_FLAG_MAXIMUM_ALLOWED, 2879 3252 &connect_handle); 2880 2881 if (!NT_STATUS_IS_OK(status)) { 2882 goto done; 2883 } 2884 2885 status = rpccli_samr_OpenDomain(cli, mem_ctx, 3253 if (!NT_STATUS_IS_OK(status)) { 3254 goto done; 3255 } 3256 3257 status = dcerpc_samr_OpenDomain(b, mem_ctx, 2886 3258 &connect_handle, 2887 3259 SEC_FLAG_MAXIMUM_ALLOWED, 2888 3260 &domain_sid, 2889 &domain_handle); 2890 2891 if (!NT_STATUS_IS_OK(status)) 2892 goto done; 2893 2894 2895 status = rpccli_samr_GetDisplayEnumerationIndex(cli, mem_ctx, 3261 &domain_handle, 3262 &result); 3263 if (!NT_STATUS_IS_OK(status)) { 3264 goto done; 3265 } 3266 if (!NT_STATUS_IS_OK(result)) { 3267 status = result; 3268 goto done; 3269 } 3270 3271 status = dcerpc_samr_GetDisplayEnumerationIndex(b, mem_ctx, 2896 3272 &domain_handle, 2897 3273 level, 2898 3274 &name, 2899 &idx); 3275 &idx, 3276 &result); 3277 if (!NT_STATUS_IS_OK(status)) { 3278 goto done; 3279 } 3280 3281 status = result; 2900 3282 2901 3283 if (NT_STATUS_IS_OK(status) || … … 2906 3288 2907 3289 if (is_valid_policy_hnd(&domain_handle)) { 2908 rpccli_samr_Close(cli, mem_ctx, &domain_handle);3290 dcerpc_samr_Close(b, mem_ctx, &domain_handle, &result); 2909 3291 } 2910 3292 if (is_valid_policy_hnd(&connect_handle)) { 2911 rpccli_samr_Close(cli, mem_ctx, &connect_handle);3293 dcerpc_samr_Close(b, mem_ctx, &connect_handle, &result); 2912 3294 } 2913 3295
Note:
See TracChangeset
for help on using the changeset viewer.