#include "includes.h"
#include "torture/rpc/rpc.h"
#include "librpc/gen_ndr/ndr_spoolss_c.h"
+#include "librpc/gen_ndr/ndr_misc.h"
#include "ntvfs/ntvfs.h"
+#include "param/param.h"
struct test_spoolss_win_context {
/* EnumPrinters */
if (W_ERROR_IS_OK(expected_werr)) {
torture_assert_int_equal(tctx, data.value,
expected_value,
- "GetPrinterData did not return expected value.");
+ talloc_asprintf(tctx, "GetPrinterData for %s did not return expected value.", value_name));
}
return true;
}
NTSTATUS status;
struct spoolss_EnumPrinterKey epk;
uint32_t needed = 0;
- const char **key_buffer = NULL;
+ union spoolss_KeyNames key_buffer;
+ uint32_t _ndr_size;
torture_comment(tctx, "Testing EnumPrinterKey(%s)\n", key);
epk.in.offered = 0;
epk.out.needed = &needed;
epk.out.key_buffer = &key_buffer;
+ epk.out._ndr_size = &_ndr_size;
status = dcerpc_spoolss_EnumPrinterKey(p, tctx, &epk);
torture_assert_ntstatus_ok(tctx, status, "EnumPrinterKey failed");
-
if (W_ERROR_EQUAL(epk.out.result, WERR_MORE_DATA)) {
epk.in.offered = needed;
status = dcerpc_spoolss_EnumPrinterKey(p, tctx, &epk);
torture_assert_werr_ok(tctx, epk.out.result, "EnumPrinterKey failed");
- ctx->printer_keys = key_buffer;
+ ctx->printer_keys = key_buffer.string_array;
return true;
}
ret &= test_EnumPrinterKey(tctx, p, &handle03, "", ctx);
- for (i=0; ctx->printer_keys[i] != NULL; i++) {
+ for (i=0; ctx->printer_keys && ctx->printer_keys[i] != NULL; i++) {
ret &= test_EnumPrinterKey(tctx, p, &handle03,
ctx->printer_keys[i],