summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2009-04-08 13:49:14 +0200
committerGünther Deschner <gd@samba.org>2009-04-08 13:51:26 +0200
commit1f6646e1351b00c55498fcfb809e9762f4d67c22 (patch)
tree58488a3c1b43f9fed9c88d70b8e51786a0f355bf
parentfa7f2ffe5116dce69e89b990f816a32721474fb6 (diff)
downloadsamba-1f6646e1351b00c55498fcfb809e9762f4d67c22.tar.gz
samba-1f6646e1351b00c55498fcfb809e9762f4d67c22.tar.bz2
samba-1f6646e1351b00c55498fcfb809e9762f4d67c22.zip
s4-smbtorture: Small fix for RPC-SPOOLSS-WIN to deal with driver-less printers.
The getdriver query failure should only be critical when there is actually a driver associated to a printer. Guenther
-rw-r--r--source4/torture/rpc/spoolss_win.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/source4/torture/rpc/spoolss_win.c b/source4/torture/rpc/spoolss_win.c
index c50cbfbaee..42b6929557 100644
--- a/source4/torture/rpc/spoolss_win.c
+++ b/source4/torture/rpc/spoolss_win.c
@@ -34,6 +34,8 @@ struct test_spoolss_win_context {
/* EnumPrinterKeys */
const char **printer_keys;
+
+ bool printer_has_driver;
};
/* This is a convenience function for all OpenPrinterEx calls */
@@ -256,6 +258,12 @@ static bool test_GetPrinter(struct torture_context *tctx,
torture_assert_werr_ok(tctx, gp.out.result, "GetPrinter failed");
ctx->current_info = gp.out.info;
+
+ if (level == 2 && gp.out.info) {
+ ctx->printer_has_driver = gp.out.info->info2.drivername &&
+ strlen(gp.out.info->info2.drivername);
+ }
+
return true;
}
@@ -289,6 +297,7 @@ static bool test_EnumJobs(struct torture_context *tctx,
static bool test_GetPrinterDriver2(struct torture_context *tctx,
struct dcerpc_pipe *p,
+ struct test_spoolss_win_context *ctx,
struct policy_handle *handle)
{
NTSTATUS status;
@@ -313,8 +322,11 @@ static bool test_GetPrinterDriver2(struct torture_context *tctx,
status = dcerpc_spoolss_GetPrinterDriver2(p, tctx, &gpd2);
torture_assert_ntstatus_ok(tctx, status, "GetPrinterDriver2 failed");
- torture_assert_werr_ok(tctx, gpd2.out.result,
- "GetPrinterDriver2 failed.");
+
+ if (ctx->printer_has_driver) {
+ torture_assert_werr_ok(tctx, gpd2.out.result,
+ "GetPrinterDriver2 failed.");
+ }
return true;
}
@@ -527,7 +539,7 @@ static bool test_WinXP(struct torture_context *tctx, struct dcerpc_pipe *p)
ret &= test_ClosePrinter(tctx, p, &handle04);
ret &= test_EnumPrinters(tctx, p, ctx, 1556);
- ret &= test_GetPrinterDriver2(tctx, p, &handle03);
+ ret &= test_GetPrinterDriver2(tctx, p, ctx, &handle03);
ret &= test_EnumForms(tctx, p, &handle03, 0);
ret &= test_EnumPrinterKey(tctx, p, &handle03, "", ctx);