diff options
author | Günther Deschner <gd@samba.org> | 2009-04-08 13:49:14 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2009-04-15 09:08:10 +0200 |
commit | e28a91623ad7e5309b89d6de259fdf322570e3a6 (patch) | |
tree | 062f6330a3db201b57b56623b2c7a02863020eb0 | |
parent | 06f5a1a4f7205328544f8fcc6419933394c05fef (diff) | |
download | samba-e28a91623ad7e5309b89d6de259fdf322570e3a6.tar.gz samba-e28a91623ad7e5309b89d6de259fdf322570e3a6.tar.xz samba-e28a91623ad7e5309b89d6de259fdf322570e3a6.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
(cherry picked from commit 1f6646e1351b00c55498fcfb809e9762f4d67c22)
(cherry picked from commit b43c0aad591f56480e32f5920dc0a4cd50f43bb8)
-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 c50cbfbaee3..42b69295574 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); |