summaryrefslogtreecommitdiffstats
path: root/source4
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2009-04-08 13:49:14 +0200
committerKarolin Seeger <kseeger@samba.org>2009-04-15 09:08:10 +0200
commite28a91623ad7e5309b89d6de259fdf322570e3a6 (patch)
tree062f6330a3db201b57b56623b2c7a02863020eb0 /source4
parent06f5a1a4f7205328544f8fcc6419933394c05fef (diff)
downloadsamba-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)
Diffstat (limited to 'source4')
-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 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);