Changeset 745 for trunk/server/source3/rpc_client/cli_spoolss.c
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
source3/rpc_client/cli_spoolss.c (modified) (64 diffs)
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/rpc_client/cli_spoolss.c
r429 r745 24 24 25 25 #include "includes.h" 26 #include "../librpc/gen_ndr/cli_spoolss.h" 26 #include "rpc_client/rpc_client.h" 27 #include "../librpc/gen_ndr/ndr_spoolss_c.h" 28 #include "rpc_client/cli_spoolss.h" 27 29 28 30 /********************************************************************** … … 41 43 union spoolss_UserLevel userlevel; 42 44 struct spoolss_UserLevel1 level1; 45 43 46 44 47 ZERO_STRUCT(devmode_ctr); … … 55 58 userlevel.level1 = &level1; 56 59 57 status = rpccli_spoolss_OpenPrinterEx(cli, mem_ctx,60 status = , mem_ctx, 58 61 printername, 59 62 NULL, … … 65 68 &werror); 66 69 70 71 72 73 67 74 if (!W_ERROR_IS_OK(werror)) { 68 75 return werror; 69 }70 71 if (!NT_STATUS_IS_OK(status)) {72 return ntstatus_to_werror(status);73 76 } 74 77 … … 92 95 uint32_t needed; 93 96 DATA_BLOB buffer; 94 95 if (offered > 0) { 96 buffer = data_blob_talloc_zero(mem_ctx, offered); 97 W_ERROR_HAVE_NO_MEMORY(buffer.data); 98 } 99 100 status = rpccli_spoolss_GetPrinterDriver(cli, mem_ctx, 97 struct dcerpc_binding_handle *b = cli->binding_handle; 98 99 if (offered > 0) { 100 buffer = data_blob_talloc_zero(mem_ctx, offered); 101 W_ERROR_HAVE_NO_MEMORY(buffer.data); 102 } 103 104 status = dcerpc_spoolss_GetPrinterDriver(b, mem_ctx, 101 105 handle, 102 106 architecture, … … 107 111 &needed, 108 112 &werror); 113 114 115 109 116 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { 110 117 offered = needed; … … 112 119 W_ERROR_HAVE_NO_MEMORY(buffer.data); 113 120 114 status = rpccli_spoolss_GetPrinterDriver(cli, mem_ctx,121 status = , mem_ctx, 115 122 handle, 116 123 architecture, … … 121 128 &needed, 122 129 &werror); 130 131 132 123 133 } 124 134 … … 146 156 uint32_t needed; 147 157 DATA_BLOB buffer; 148 149 if (offered > 0) { 150 buffer = data_blob_talloc_zero(mem_ctx, offered); 151 W_ERROR_HAVE_NO_MEMORY(buffer.data); 152 } 153 154 status = rpccli_spoolss_GetPrinterDriver2(cli, mem_ctx, 158 struct dcerpc_binding_handle *b = cli->binding_handle; 159 160 if (offered > 0) { 161 buffer = data_blob_talloc_zero(mem_ctx, offered); 162 W_ERROR_HAVE_NO_MEMORY(buffer.data); 163 } 164 165 status = dcerpc_spoolss_GetPrinterDriver2(b, mem_ctx, 155 166 handle, 156 167 architecture, … … 165 176 server_minor_version, 166 177 &werror); 178 179 180 181 167 182 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { 168 183 offered = needed; … … 170 185 W_ERROR_HAVE_NO_MEMORY(buffer.data); 171 186 172 status = rpccli_spoolss_GetPrinterDriver2(cli, mem_ctx,187 status = , mem_ctx, 173 188 handle, 174 189 architecture, … … 184 199 &werror); 185 200 } 201 202 203 186 204 187 205 return werror; … … 203 221 struct spoolss_UserLevel1 level1; 204 222 struct policy_handle handle; 223 205 224 206 225 ZERO_STRUCT(devmode_ctr); … … 219 238 userlevel_ctr.user_info.level1 = &level1; 220 239 221 status = rpccli_spoolss_AddPrinterEx(cli, mem_ctx,240 status = , mem_ctx, 222 241 cli->srv_name_slash, 223 242 info_ctr, … … 227 246 &handle, 228 247 &result); 248 249 250 251 229 252 return result; 230 253 } … … 245 268 DATA_BLOB buffer; 246 269 uint32_t needed; 247 248 if (offered > 0) { 249 buffer = data_blob_talloc_zero(mem_ctx, offered); 250 W_ERROR_HAVE_NO_MEMORY(buffer.data); 251 } 252 253 status = rpccli_spoolss_GetPrinter(cli, mem_ctx, 270 struct dcerpc_binding_handle *b = cli->binding_handle; 271 272 if (offered > 0) { 273 buffer = data_blob_talloc_zero(mem_ctx, offered); 274 W_ERROR_HAVE_NO_MEMORY(buffer.data); 275 } 276 277 status = dcerpc_spoolss_GetPrinter(b, mem_ctx, 254 278 handle, 255 279 level, … … 259 283 &needed, 260 284 &werror); 261 262 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { 263 264 offered = needed; 265 buffer = data_blob_talloc_zero(mem_ctx, offered); 266 W_ERROR_HAVE_NO_MEMORY(buffer.data); 267 268 status = rpccli_spoolss_GetPrinter(cli, mem_ctx, 285 if (!NT_STATUS_IS_OK(status)) { 286 return ntstatus_to_werror(status); 287 } 288 289 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { 290 291 offered = needed; 292 buffer = data_blob_talloc_zero(mem_ctx, offered); 293 W_ERROR_HAVE_NO_MEMORY(buffer.data); 294 295 status = dcerpc_spoolss_GetPrinter(b, mem_ctx, 269 296 handle, 270 297 level, … … 275 302 &werror); 276 303 } 304 305 306 277 307 278 308 return werror; … … 295 325 uint32_t needed; 296 326 DATA_BLOB buffer; 297 298 if (offered > 0) { 299 buffer = data_blob_talloc_zero(mem_ctx, offered); 300 W_ERROR_HAVE_NO_MEMORY(buffer.data); 301 } 302 303 status = rpccli_spoolss_GetJob(cli, mem_ctx, 327 struct dcerpc_binding_handle *b = cli->binding_handle; 328 329 if (offered > 0) { 330 buffer = data_blob_talloc_zero(mem_ctx, offered); 331 W_ERROR_HAVE_NO_MEMORY(buffer.data); 332 } 333 334 status = dcerpc_spoolss_GetJob(b, mem_ctx, 304 335 handle, 305 336 job_id, … … 310 341 &needed, 311 342 &werror); 343 344 345 312 346 313 347 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 316 350 W_ERROR_HAVE_NO_MEMORY(buffer.data); 317 351 318 status = rpccli_spoolss_GetJob(cli, mem_ctx,352 status = , mem_ctx, 319 353 handle, 320 354 job_id, … … 326 360 &werror); 327 361 } 362 363 364 328 365 329 366 return werror; … … 346 383 uint32_t needed; 347 384 DATA_BLOB buffer; 348 349 if (offered > 0) { 350 buffer = data_blob_talloc_zero(mem_ctx, offered); 351 W_ERROR_HAVE_NO_MEMORY(buffer.data); 352 } 353 354 status = rpccli_spoolss_EnumForms(cli, mem_ctx, 385 struct dcerpc_binding_handle *b = cli->binding_handle; 386 387 if (offered > 0) { 388 buffer = data_blob_talloc_zero(mem_ctx, offered); 389 W_ERROR_HAVE_NO_MEMORY(buffer.data); 390 } 391 392 status = dcerpc_spoolss_EnumForms(b, mem_ctx, 355 393 handle, 356 394 level, … … 361 399 &needed, 362 400 &werror); 401 402 403 363 404 364 405 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 367 408 W_ERROR_HAVE_NO_MEMORY(buffer.data); 368 409 369 status = rpccli_spoolss_EnumForms(cli, mem_ctx,410 status = , mem_ctx, 370 411 handle, 371 412 level, … … 377 418 &werror); 378 419 } 420 421 422 379 423 380 424 return werror; … … 398 442 uint32_t needed; 399 443 DATA_BLOB buffer; 400 401 if (offered > 0) { 402 buffer = data_blob_talloc_zero(mem_ctx, offered); 403 W_ERROR_HAVE_NO_MEMORY(buffer.data); 404 } 405 406 status = rpccli_spoolss_EnumPrintProcessors(cli, mem_ctx, 444 struct dcerpc_binding_handle *b = cli->binding_handle; 445 446 if (offered > 0) { 447 buffer = data_blob_talloc_zero(mem_ctx, offered); 448 W_ERROR_HAVE_NO_MEMORY(buffer.data); 449 } 450 451 status = dcerpc_spoolss_EnumPrintProcessors(b, mem_ctx, 407 452 servername, 408 453 environment, … … 414 459 &needed, 415 460 &werror); 461 462 463 416 464 417 465 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 420 468 W_ERROR_HAVE_NO_MEMORY(buffer.data); 421 469 422 status = rpccli_spoolss_EnumPrintProcessors(cli, mem_ctx,470 status = , mem_ctx, 423 471 servername, 424 472 environment, … … 431 479 &werror); 432 480 } 481 482 483 433 484 434 485 return werror; … … 452 503 uint32_t needed; 453 504 DATA_BLOB buffer; 454 455 if (offered > 0) { 456 buffer = data_blob_talloc_zero(mem_ctx, offered); 457 W_ERROR_HAVE_NO_MEMORY(buffer.data); 458 } 459 460 status = rpccli_spoolss_EnumPrintProcDataTypes(cli, mem_ctx, 505 struct dcerpc_binding_handle *b = cli->binding_handle; 506 507 if (offered > 0) { 508 buffer = data_blob_talloc_zero(mem_ctx, offered); 509 W_ERROR_HAVE_NO_MEMORY(buffer.data); 510 } 511 512 status = dcerpc_spoolss_EnumPrintProcDataTypes(b, mem_ctx, 461 513 servername, 462 514 print_processor_name, … … 468 520 &needed, 469 521 &werror); 522 523 524 470 525 471 526 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 474 529 W_ERROR_HAVE_NO_MEMORY(buffer.data); 475 530 476 status = rpccli_spoolss_EnumPrintProcDataTypes(cli, mem_ctx,531 status = , mem_ctx, 477 532 servername, 478 533 print_processor_name, … … 485 540 &werror); 486 541 } 542 543 544 487 545 488 546 return werror; … … 505 563 uint32_t needed; 506 564 DATA_BLOB buffer; 507 508 if (offered > 0) { 509 buffer = data_blob_talloc_zero(mem_ctx, offered); 510 W_ERROR_HAVE_NO_MEMORY(buffer.data); 511 } 512 513 status = rpccli_spoolss_EnumPorts(cli, mem_ctx, 565 struct dcerpc_binding_handle *b = cli->binding_handle; 566 567 if (offered > 0) { 568 buffer = data_blob_talloc_zero(mem_ctx, offered); 569 W_ERROR_HAVE_NO_MEMORY(buffer.data); 570 } 571 572 status = dcerpc_spoolss_EnumPorts(b, mem_ctx, 514 573 servername, 515 574 level, … … 520 579 &needed, 521 580 &werror); 581 582 583 522 584 523 585 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 526 588 W_ERROR_HAVE_NO_MEMORY(buffer.data); 527 589 528 status = rpccli_spoolss_EnumPorts(cli, mem_ctx,590 status = , mem_ctx, 529 591 servername, 530 592 level, … … 536 598 &werror); 537 599 } 600 601 602 538 603 539 604 return werror; … … 556 621 uint32_t needed; 557 622 DATA_BLOB buffer; 558 559 if (offered > 0) { 560 buffer = data_blob_talloc_zero(mem_ctx, offered); 561 W_ERROR_HAVE_NO_MEMORY(buffer.data); 562 } 563 564 status = rpccli_spoolss_EnumMonitors(cli, mem_ctx, 623 struct dcerpc_binding_handle *b = cli->binding_handle; 624 625 if (offered > 0) { 626 buffer = data_blob_talloc_zero(mem_ctx, offered); 627 W_ERROR_HAVE_NO_MEMORY(buffer.data); 628 } 629 630 status = dcerpc_spoolss_EnumMonitors(b, mem_ctx, 565 631 servername, 566 632 level, … … 571 637 &needed, 572 638 &werror); 639 640 641 573 642 574 643 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 577 646 W_ERROR_HAVE_NO_MEMORY(buffer.data); 578 647 579 status = rpccli_spoolss_EnumMonitors(cli, mem_ctx,648 status = , mem_ctx, 580 649 servername, 581 650 level, … … 586 655 &needed, 587 656 &werror); 657 658 659 588 660 } 589 661 … … 609 681 uint32_t needed; 610 682 DATA_BLOB buffer; 611 612 if (offered > 0) { 613 buffer = data_blob_talloc_zero(mem_ctx, offered); 614 W_ERROR_HAVE_NO_MEMORY(buffer.data); 615 } 616 617 status = rpccli_spoolss_EnumJobs(cli, mem_ctx, 683 struct dcerpc_binding_handle *b = cli->binding_handle; 684 685 if (offered > 0) { 686 buffer = data_blob_talloc_zero(mem_ctx, offered); 687 W_ERROR_HAVE_NO_MEMORY(buffer.data); 688 } 689 690 status = dcerpc_spoolss_EnumJobs(b, mem_ctx, 618 691 handle, 619 692 firstjob, … … 626 699 &needed, 627 700 &werror); 701 702 703 628 704 629 705 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 632 708 W_ERROR_HAVE_NO_MEMORY(buffer.data); 633 709 634 status = rpccli_spoolss_EnumJobs(cli, mem_ctx,710 status = , mem_ctx, 635 711 handle, 636 712 firstjob, … … 644 720 &werror); 645 721 } 722 723 724 646 725 647 726 return werror; … … 665 744 uint32_t needed; 666 745 DATA_BLOB buffer; 667 668 if (offered > 0) { 669 buffer = data_blob_talloc_zero(mem_ctx, offered); 670 W_ERROR_HAVE_NO_MEMORY(buffer.data); 671 } 672 673 status = rpccli_spoolss_EnumPrinterDrivers(cli, mem_ctx, 746 struct dcerpc_binding_handle *b = cli->binding_handle; 747 748 if (offered > 0) { 749 buffer = data_blob_talloc_zero(mem_ctx, offered); 750 W_ERROR_HAVE_NO_MEMORY(buffer.data); 751 } 752 753 status = dcerpc_spoolss_EnumPrinterDrivers(b, mem_ctx, 674 754 server, 675 755 environment, … … 681 761 &needed, 682 762 &werror); 763 764 765 683 766 684 767 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 687 770 W_ERROR_HAVE_NO_MEMORY(buffer.data); 688 771 689 status = rpccli_spoolss_EnumPrinterDrivers(cli, mem_ctx,772 status = , mem_ctx, 690 773 server, 691 774 environment, … … 698 781 &werror); 699 782 } 783 784 785 700 786 701 787 return werror; … … 719 805 uint32_t needed; 720 806 DATA_BLOB buffer; 721 722 if (offered > 0) { 723 buffer = data_blob_talloc_zero(mem_ctx, offered); 724 W_ERROR_HAVE_NO_MEMORY(buffer.data); 725 } 726 727 status = rpccli_spoolss_EnumPrinters(cli, mem_ctx, 807 struct dcerpc_binding_handle *b = cli->binding_handle; 808 809 if (offered > 0) { 810 buffer = data_blob_talloc_zero(mem_ctx, offered); 811 W_ERROR_HAVE_NO_MEMORY(buffer.data); 812 } 813 814 status = dcerpc_spoolss_EnumPrinters(b, mem_ctx, 728 815 flags, 729 816 server, … … 735 822 &needed, 736 823 &werror); 824 825 826 737 827 738 828 if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) { … … 741 831 W_ERROR_HAVE_NO_MEMORY(buffer.data); 742 832 743 status = rpccli_spoolss_EnumPrinters(cli, mem_ctx,833 status = , mem_ctx, 744 834 flags, 745 835 server, … … 752 842 &werror); 753 843 } 844 845 846 754 847 755 848 return werror; … … 773 866 uint32_t needed; 774 867 uint8_t *data; 868 775 869 776 870 data = talloc_zero_array(mem_ctx, uint8_t, offered); 777 871 W_ERROR_HAVE_NO_MEMORY(data); 778 872 779 status = rpccli_spoolss_GetPrinterData(cli, mem_ctx,873 status = , mem_ctx, 780 874 handle, 781 875 value_name, … … 785 879 &needed, 786 880 &werror); 881 882 883 787 884 788 885 if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) { … … 791 888 W_ERROR_HAVE_NO_MEMORY(data); 792 889 793 status = rpccli_spoolss_GetPrinterData(cli, mem_ctx,890 status = , mem_ctx, 794 891 handle, 795 892 value_name, … … 800 897 &werror); 801 898 } 899 900 901 802 902 803 903 *data_p = data; … … 823 923 union spoolss_KeyNames _key_buffer; 824 924 uint32_t _ndr_size; 825 826 status = rpccli_spoolss_EnumPrinterKey(cli, mem_ctx, 925 struct dcerpc_binding_handle *b = cli->binding_handle; 926 927 status = dcerpc_spoolss_EnumPrinterKey(b, mem_ctx, 827 928 handle, 828 929 key_name, … … 832 933 &needed, 833 934 &werror); 935 936 937 834 938 835 939 if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) { 836 940 offered = needed; 837 status = rpccli_spoolss_EnumPrinterKey(cli, mem_ctx,941 status = , mem_ctx, 838 942 handle, 839 943 key_name, … … 844 948 &werror); 845 949 } 950 951 952 846 953 847 954 *key_buffer = _key_buffer.string_array; … … 865 972 WERROR werror; 866 973 uint32_t needed; 867 868 status = rpccli_spoolss_EnumPrinterDataEx(cli, mem_ctx, 974 struct dcerpc_binding_handle *b = cli->binding_handle; 975 976 status = dcerpc_spoolss_EnumPrinterDataEx(b, mem_ctx, 869 977 handle, 870 978 key_name, … … 874 982 &needed, 875 983 &werror); 984 985 986 876 987 877 988 if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) { 878 989 offered = needed; 879 990 880 status = rpccli_spoolss_EnumPrinterDataEx(cli, mem_ctx,991 status = , mem_ctx, 881 992 handle, 882 993 key_name, … … 887 998 &werror); 888 999 } 889 890 return werror; 891 } 1000 if (!NT_STATUS_IS_OK(status)) { 1001 return ntstatus_to_werror(status); 1002 } 1003 1004 return werror; 1005 }
Note:
See TracChangeset
for help on using the changeset viewer.
