diff options
author | Günther Deschner <gd@samba.org> | 2009-04-08 13:49:14 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2009-04-08 13:51:26 +0200 |
commit | 1f6646e1351b00c55498fcfb809e9762f4d67c22 (patch) | |
tree | 58488a3c1b43f9fed9c88d70b8e51786a0f355bf /source4 | |
parent | fa7f2ffe5116dce69e89b990f816a32721474fb6 (diff) | |
download | samba-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
Diffstat (limited to 'source4')
-rw-r--r-- | source4/torture/rpc/spoolss_win.c | 18 |
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); |