diff options
Diffstat (limited to 'source/rpc_client/cli_spoolss.c')
-rw-r--r-- | source/rpc_client/cli_spoolss.c | 84 |
1 files changed, 48 insertions, 36 deletions
diff --git a/source/rpc_client/cli_spoolss.c b/source/rpc_client/cli_spoolss.c index 518c20ff9b0..6ce74fed665 100644 --- a/source/rpc_client/cli_spoolss.c +++ b/source/rpc_client/cli_spoolss.c @@ -31,13 +31,25 @@ * @{ **/ +/********************************************************************** + Initialize a new spoolss buff for use by a client rpc +**********************************************************************/ +static void init_buffer(NEW_BUFFER *buffer, uint32 size, TALLOC_CTX *ctx) +{ + buffer->ptr = (size != 0); + buffer->size = size; + buffer->string_at_end = size; + prs_init(&buffer->prs, size, ctx, MARSHALL); + buffer->struct_start = prs_offset(&buffer->prs); +} + /********************************************************************* Decode various spoolss rpc's and info levels ********************************************************************/ /********************************************************************** **********************************************************************/ -static void decode_printer_info_0(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printer_info_0(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, PRINTER_INFO_0 **info) { uint32 i; @@ -57,7 +69,7 @@ static void decode_printer_info_0(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_printer_info_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printer_info_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, PRINTER_INFO_1 **info) { uint32 i; @@ -77,7 +89,7 @@ static void decode_printer_info_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_printer_info_2(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printer_info_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, PRINTER_INFO_2 **info) { uint32 i; @@ -99,7 +111,7 @@ static void decode_printer_info_2(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_printer_info_3(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printer_info_3(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, PRINTER_INFO_3 **info) { uint32 i; @@ -120,7 +132,7 @@ static void decode_printer_info_3(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_printer_info_7(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printer_info_7(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, PRINTER_INFO_7 **info) { uint32 i; @@ -141,7 +153,7 @@ static void decode_printer_info_7(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_port_info_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_port_info_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, PORT_INFO_1 **info) { uint32 i; @@ -161,7 +173,7 @@ static void decode_port_info_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_port_info_2(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_port_info_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, PORT_INFO_2 **info) { uint32 i; @@ -181,7 +193,7 @@ static void decode_port_info_2(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_printer_driver_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printer_driver_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, DRIVER_INFO_1 **info) { uint32 i; @@ -201,7 +213,7 @@ static void decode_printer_driver_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_printer_driver_2(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printer_driver_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, DRIVER_INFO_2 **info) { uint32 i; @@ -221,7 +233,7 @@ static void decode_printer_driver_2(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_printer_driver_3(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printer_driver_3(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, DRIVER_INFO_3 **info) { uint32 i; @@ -241,7 +253,7 @@ static void decode_printer_driver_3(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, /********************************************************************** **********************************************************************/ -static void decode_printerdriverdir_1 (TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_printerdriverdir_1 (TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 returned, DRIVER_DIRECTORY_1 **info ) { @@ -418,7 +430,7 @@ WERROR cli_spoolss_enum_printers(struct cli_state *cli, TALLOC_CTX *mem_ctx, prs_struct qbuf, rbuf; SPOOL_Q_ENUMPRINTERS q; SPOOL_R_ENUMPRINTERS r; - RPC_BUFFER buffer; + NEW_BUFFER buffer; WERROR result = W_ERROR(ERRgeneral); ZERO_STRUCT(q); @@ -426,7 +438,7 @@ WERROR cli_spoolss_enum_printers(struct cli_state *cli, TALLOC_CTX *mem_ctx, /* Initialise input parameters */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -513,7 +525,7 @@ WERROR cli_spoolss_enum_ports(struct cli_state *cli, TALLOC_CTX *mem_ctx, prs_struct qbuf, rbuf; SPOOL_Q_ENUMPORTS q; SPOOL_R_ENUMPORTS r; - RPC_BUFFER buffer; + NEW_BUFFER buffer; WERROR result = W_ERROR(ERRgeneral); fstring server; @@ -525,7 +537,7 @@ WERROR cli_spoolss_enum_ports(struct cli_state *cli, TALLOC_CTX *mem_ctx, /* Initialise input parameters */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -588,7 +600,7 @@ WERROR cli_spoolss_getprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx, prs_struct qbuf, rbuf; SPOOL_Q_GETPRINTER q; SPOOL_R_GETPRINTER r; - RPC_BUFFER buffer; + NEW_BUFFER buffer; WERROR result = W_ERROR(ERRgeneral); ZERO_STRUCT(q); @@ -596,7 +608,7 @@ WERROR cli_spoolss_getprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx, /* Initialise input parameters */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -737,7 +749,7 @@ WERROR cli_spoolss_getprinterdriver(struct cli_state *cli, prs_struct qbuf, rbuf; SPOOL_Q_GETPRINTERDRIVER2 q; SPOOL_R_GETPRINTERDRIVER2 r; - RPC_BUFFER buffer; + NEW_BUFFER buffer; WERROR result = W_ERROR(ERRgeneral); fstring server; @@ -749,7 +761,7 @@ WERROR cli_spoolss_getprinterdriver(struct cli_state *cli, /* Initialise input parameters */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -818,7 +830,7 @@ WERROR cli_spoolss_enumprinterdrivers (struct cli_state *cli, prs_struct qbuf, rbuf; SPOOL_Q_ENUMPRINTERDRIVERS q; SPOOL_R_ENUMPRINTERDRIVERS r; - RPC_BUFFER buffer; + NEW_BUFFER buffer; WERROR result = W_ERROR(ERRgeneral); fstring server; @@ -830,7 +842,7 @@ WERROR cli_spoolss_enumprinterdrivers (struct cli_state *cli, /* Initialise input parameters */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -904,7 +916,7 @@ WERROR cli_spoolss_getprinterdriverdir (struct cli_state *cli, prs_struct qbuf, rbuf; SPOOL_Q_GETPRINTERDRIVERDIR q; SPOOL_R_GETPRINTERDRIVERDIR r; - RPC_BUFFER buffer; + NEW_BUFFER buffer; WERROR result = W_ERROR(ERRgeneral); fstring server; @@ -916,7 +928,7 @@ WERROR cli_spoolss_getprinterdriverdir (struct cli_state *cli, /* Initialise input parameters */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -1192,7 +1204,7 @@ WERROR cli_spoolss_getprintprocessordirectory(struct cli_state *cli, SPOOL_R_GETPRINTPROCESSORDIRECTORY r; int level = 1; WERROR result = W_ERROR(ERRgeneral); - RPC_BUFFER buffer; + NEW_BUFFER buffer; ZERO_STRUCT(q); ZERO_STRUCT(r); @@ -1204,7 +1216,7 @@ WERROR cli_spoolss_getprintprocessordirectory(struct cli_state *cli, /* Initialise input parameters */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); make_spoolss_q_getprintprocessordirectory( &q, name, environment, level, &buffer, offered); @@ -1376,14 +1388,14 @@ WERROR cli_spoolss_getform(struct cli_state *cli, TALLOC_CTX *mem_ctx, SPOOL_Q_GETFORM q; SPOOL_R_GETFORM r; WERROR result = W_ERROR(ERRgeneral); - RPC_BUFFER buffer; + NEW_BUFFER buffer; ZERO_STRUCT(q); ZERO_STRUCT(r); /* Initialise parse structures */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -1482,7 +1494,7 @@ WERROR cli_spoolss_deleteform(struct cli_state *cli, TALLOC_CTX *mem_ctx, return result; } -static void decode_forms_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_forms_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 num_forms, FORM_1 **forms) { int i; @@ -1518,14 +1530,14 @@ WERROR cli_spoolss_enumforms(struct cli_state *cli, TALLOC_CTX *mem_ctx, SPOOL_Q_ENUMFORMS q; SPOOL_R_ENUMFORMS r; WERROR result = W_ERROR(ERRgeneral); - RPC_BUFFER buffer; + NEW_BUFFER buffer; ZERO_STRUCT(q); ZERO_STRUCT(r); /* Initialise parse structures */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -1564,7 +1576,7 @@ WERROR cli_spoolss_enumforms(struct cli_state *cli, TALLOC_CTX *mem_ctx, return result; } -static void decode_jobs_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_jobs_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 num_jobs, JOB_INFO_1 **jobs) { uint32 i; @@ -1576,7 +1588,7 @@ static void decode_jobs_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, smb_io_job_info_1("", buffer, &((*jobs)[i]), 0); } -static void decode_jobs_2(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, +static void decode_jobs_2(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, uint32 num_jobs, JOB_INFO_2 **jobs) { uint32 i; @@ -1599,14 +1611,14 @@ WERROR cli_spoolss_enumjobs(struct cli_state *cli, TALLOC_CTX *mem_ctx, SPOOL_Q_ENUMJOBS q; SPOOL_R_ENUMJOBS r; WERROR result = W_ERROR(ERRgeneral); - RPC_BUFFER buffer; + NEW_BUFFER buffer; ZERO_STRUCT(q); ZERO_STRUCT(r); /* Initialise parse structures */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); @@ -1716,14 +1728,14 @@ WERROR cli_spoolss_getjob(struct cli_state *cli, TALLOC_CTX *mem_ctx, SPOOL_Q_GETJOB q; SPOOL_R_GETJOB r; WERROR result = W_ERROR(ERRgeneral); - RPC_BUFFER buffer; + NEW_BUFFER buffer; ZERO_STRUCT(q); ZERO_STRUCT(r); /* Initialise parse structures */ - rpcbuf_init(&buffer, offered, mem_ctx); + init_buffer(&buffer, offered, mem_ctx); prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); |