From 77379dc3a30c4d259571abbeb8f593a01d4c3480 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=BCnther=20Deschner?= Date: Mon, 7 Dec 2009 11:54:26 +0100 Subject: [PATCH] s3: fix net and rpcclient after setprinterdataex changes. Guenther (cherry picked from commit c85ed0054e67413ffcd169c405ee4feda3555628) (cherry picked from commit 3f3c04e963d5532340b306ea4e875df2b03985d4) --- source3/rpcclient/cmd_spoolss.c | 23 ++++++----------------- source3/utils/net_rpc_printer.c | 13 +++++++++++-- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c index e24fb99e6fd..5393ba75a99 100644 --- a/source3/rpcclient/cmd_spoolss.c +++ b/source3/rpcclient/cmd_spoolss.c @@ -864,10 +864,9 @@ static WERROR cmd_spoolss_getprinterdataex(struct rpc_pipe_client *cli, NTSTATUS status; fstring printername; const char *valuename, *keyname; - struct regval_blob value; enum winreg_Type type; - uint8_t *buffer = NULL; + union spoolss_PrinterData data; uint32_t offered = 0; uint32_t needed; @@ -903,21 +902,20 @@ static WERROR cmd_spoolss_getprinterdataex(struct rpc_pipe_client *cli, &pol, keyname, valuename, - &type, - buffer, offered, + &type, + &data, &needed, &result); if (W_ERROR_EQUAL(result, WERR_MORE_DATA)) { offered = needed; - buffer = talloc_array(mem_ctx, uint8_t, needed); status = rpccli_spoolss_GetPrinterDataEx(cli, mem_ctx, &pol, keyname, valuename, - &type, - buffer, offered, + &type, + &data, &needed, &result); } @@ -926,22 +924,13 @@ static WERROR cmd_spoolss_getprinterdataex(struct rpc_pipe_client *cli, goto done; } - if (!W_ERROR_IS_OK(result)) { - goto done; - } - - if (!W_ERROR_IS_OK(result)) goto done; /* Display printer data */ - fstrcpy(value.valuename, valuename); - value.type = type; - value.size = needed; - value.data_p = buffer; + display_printer_data(valuename, type, &data); - display_reg_value(value); done: if (is_valid_policy_hnd(&pol)) diff --git a/source3/utils/net_rpc_printer.c b/source3/utils/net_rpc_printer.c index 6ad8224c869..d1d38e8e00f 100644 --- a/source3/utils/net_rpc_printer.c +++ b/source3/utils/net_rpc_printer.c @@ -910,6 +910,15 @@ static bool net_spoolss_setprinterdataex(struct rpc_pipe_client *pipe_hnd, { WERROR result; NTSTATUS status; + union spoolss_PrinterData data; + DATA_BLOB blob; + + blob = data_blob_const(value->data_p, value->size); + + result = pull_spoolss_PrinterData(mem_ctx, &blob, &data, value->type); + if (!W_ERROR_IS_OK(result)) { + return false; + } /* setprinterdataex call */ status = rpccli_spoolss_SetPrinterDataEx(pipe_hnd, mem_ctx, @@ -917,8 +926,8 @@ static bool net_spoolss_setprinterdataex(struct rpc_pipe_client *pipe_hnd, keyname, value->valuename, value->type, - value->data_p, - value->size, + data, + 0, &result); if (!W_ERROR_IS_OK(result)) { -- 2.11.4.GIT