From 5f60855ba2eb822dcb867378ff09278c42931b89 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 2 Dec 2009 14:25:31 +0100 Subject: samba-spoolss: use spoolss_StringArray2 in spoolss_EnumPrinterKey. This should finally resolve the endian issues we were seeing on sparc and is much cleaner for spoolss clients and servers. Guenther --- source4/torture/rpc/spoolss_win.c | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) (limited to 'source4/torture/rpc/spoolss_win.c') diff --git a/source4/torture/rpc/spoolss_win.c b/source4/torture/rpc/spoolss_win.c index 3a3245df55..d2851cfea1 100644 --- a/source4/torture/rpc/spoolss_win.c +++ b/source4/torture/rpc/spoolss_win.c @@ -384,17 +384,15 @@ static bool test_EnumPrinterKey(struct torture_context *tctx, NTSTATUS status; struct spoolss_EnumPrinterKey epk; uint32_t needed = 0; - uint16_t *key_buffer; + struct spoolss_StringArray2 key_buffer; torture_comment(tctx, "Testing EnumPrinterKey(%s)\n", key); - key_buffer = talloc_zero_array(tctx, uint16_t, 0); - epk.in.handle = handle; epk.in.key_name = talloc_strdup(tctx, key); epk.in.offered = 0; epk.out.needed = &needed; - epk.out.key_buffer = key_buffer; + epk.out.key_buffer = &key_buffer; status = dcerpc_spoolss_EnumPrinterKey(p, tctx, &epk); torture_assert_ntstatus_ok(tctx, status, "EnumPrinterKey failed"); @@ -402,8 +400,6 @@ static bool test_EnumPrinterKey(struct torture_context *tctx, if (W_ERROR_EQUAL(epk.out.result, WERR_MORE_DATA)) { epk.in.offered = needed; - key_buffer = talloc_zero_array(tctx, uint16_t, needed/2); - epk.out.key_buffer = key_buffer; status = dcerpc_spoolss_EnumPrinterKey(p, tctx, &epk); torture_assert_ntstatus_ok(tctx, status, "EnumPrinterKey failed"); @@ -411,16 +407,7 @@ static bool test_EnumPrinterKey(struct torture_context *tctx, torture_assert_werr_ok(tctx, epk.out.result, "EnumPrinterKey failed"); - { - union winreg_Data data; - enum ndr_err_code ndr_err; - DATA_BLOB blob = data_blob_const(key_buffer, needed); - ndr_err = ndr_pull_union_blob(&blob, tctx, lp_iconv_convenience(tctx->lp_ctx), - &data, REG_MULTI_SZ, - (ndr_pull_flags_fn_t)ndr_pull_winreg_Data); - torture_assert_ndr_success(tctx, ndr_err, "failed to pull REG_MULTI_SZ"); - ctx->printer_keys = data.string_array; - } + ctx->printer_keys = key_buffer.string; return true; } -- cgit