[SCM] Samba Shared Repository - branch master updated
Günther Deschner
gd at samba.org
Thu Apr 22 19:27:10 MDT 2010
The branch, master has been updated
via a149383... s3-spoolss: make sure AddPrinterDriver calls into AddPrinterDriverEx.
via 587921b... s4-smbtorture: fix test_EnumPrinterDrivers_findone().
via 20133cf... s4-smbtorture: samba currently supports level 3 and 6 driver adds.
from 413ffe9... s3-spoolss: fix some crash bugs and missing error codes in AddDriver paths.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit a14938377e42344eb04a3d3003199b231e88dc8d
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 23 03:04:47 2010 +0200
s3-spoolss: make sure AddPrinterDriver calls into AddPrinterDriverEx.
Not vice versa. Also disable some info levels in AddPrinterDriver according to
MS-RPRN 3.1.4.4.1.
Found by torture test.
Guenther
commit 587921b7da93cc02386193ac4c3354db4717fa3f
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 23 03:03:59 2010 +0200
s4-smbtorture: fix test_EnumPrinterDrivers_findone().
Guenther
commit 20133cfe560f2bd84b5c2ebab9dc25b0c98efeb9
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 23 02:49:42 2010 +0200
s4-smbtorture: samba currently supports level 3 and 6 driver adds.
Guenther
-----------------------------------------------------------------------
Summary of changes:
source3/rpc_server/srv_spoolss_nt.c | 46 ++++++++++++++++++++--------------
source4/torture/rpc/spoolss.c | 41 +++++++++++++++++++++++++------
2 files changed, 60 insertions(+), 27 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 72499d8..e8b5f8e 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -7370,11 +7370,11 @@ WERROR _spoolss_AddPrinter(pipes_struct *p,
}
/****************************************************************
- _spoolss_AddPrinterDriver
+ _spoolss_AddPrinterDriverEx
****************************************************************/
-WERROR _spoolss_AddPrinterDriver(pipes_struct *p,
- struct spoolss_AddPrinterDriver *r)
+WERROR _spoolss_AddPrinterDriverEx(pipes_struct *p,
+ struct spoolss_AddPrinterDriverEx *r)
{
WERROR err = WERR_OK;
char *driver_name = NULL;
@@ -7392,6 +7392,18 @@ WERROR _spoolss_AddPrinterDriver(pipes_struct *p,
return WERR_INVALID_PARAM;
}
+ /*
+ * we only support the semantics of AddPrinterDriver()
+ * i.e. only copy files that are newer than existing ones
+ */
+
+ if (r->in.flags == 0) {
+ return WERR_INVALID_PARAM;
+ }
+
+ if (r->in.flags != APD_COPY_NEW_FILES) {
+ return WERR_ACCESS_DENIED;
+ }
/* FIXME */
if (r->in.info_ctr->level != 3 && r->in.info_ctr->level != 6) {
@@ -7498,31 +7510,27 @@ done:
}
/****************************************************************
- _spoolss_AddPrinterDriverEx
+ _spoolss_AddPrinterDriver
****************************************************************/
-WERROR _spoolss_AddPrinterDriverEx(pipes_struct *p,
- struct spoolss_AddPrinterDriverEx *r)
+WERROR _spoolss_AddPrinterDriver(pipes_struct *p,
+ struct spoolss_AddPrinterDriver *r)
{
- struct spoolss_AddPrinterDriver a;
-
- /*
- * we only support the semantics of AddPrinterDriver()
- * i.e. only copy files that are newer than existing ones
- */
-
- if (r->in.flags == 0) {
- return WERR_INVALID_PARAM;
- }
+ struct spoolss_AddPrinterDriverEx a;
- if (r->in.flags != APD_COPY_NEW_FILES) {
- return WERR_ACCESS_DENIED;
+ switch (r->in.info_ctr->level) {
+ case 6:
+ case 8:
+ return WERR_UNKNOWN_LEVEL;
+ default:
+ break;
}
a.in.servername = r->in.servername;
a.in.info_ctr = r->in.info_ctr;
+ a.in.flags = APD_COPY_NEW_FILES;
- return _spoolss_AddPrinterDriver(p, &a);
+ return _spoolss_AddPrinterDriverEx(p, &a);
}
/****************************************************************************
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index c046f18..711f4df 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -532,28 +532,28 @@ static bool test_EnumPrinterDrivers_findone(struct torture_context *tctx,
const char *driver_name_ret;
switch (level) {
case 1:
- driver_name_ret = info->info1.driver_name;
+ driver_name_ret = info[i].info1.driver_name;
break;
case 2:
- driver_name_ret = info->info2.driver_name;
+ driver_name_ret = info[i].info2.driver_name;
break;
case 3:
- driver_name_ret = info->info3.driver_name;
+ driver_name_ret = info[i].info3.driver_name;
break;
case 4:
- driver_name_ret = info->info4.driver_name;
+ driver_name_ret = info[i].info4.driver_name;
break;
case 5:
- driver_name_ret = info->info5.driver_name;
+ driver_name_ret = info[i].info5.driver_name;
break;
case 6:
- driver_name_ret = info->info6.driver_name;
+ driver_name_ret = info[i].info6.driver_name;
break;
case 7:
- driver_name_ret = info->info7.driver_name;
+ driver_name_ret = info[i].info7.driver_name;
break;
case 8:
- driver_name_ret = info->info8.driver_name;
+ driver_name_ret = info[i].info8.driver_name;
break;
default:
break;
@@ -7307,6 +7307,18 @@ static bool test_add_driver_arg(struct torture_context *tctx,
for (i=0; i < ARRAY_SIZE(levels); i++) {
+ if (torture_setting_bool(tctx, "samba3", false)) {
+ switch (levels[i]) {
+ case 2:
+ case 4:
+ case 8:
+ torture_comment(tctx, "skipping level %d against samba\n", levels[i]);
+ continue;
+ default:
+ break;
+ }
+ }
+
torture_comment(tctx,
"Testing PrinterDriver%s '%s' add & delete level %d\n",
d->ex ? "Ex" : "", info8.driver_name, levels[i]);
@@ -7320,6 +7332,19 @@ static bool test_add_driver_arg(struct torture_context *tctx,
for (i=0; i < ARRAY_SIZE(levels); i++) {
+ if (torture_setting_bool(tctx, "samba3", false)) {
+ switch (levels[i]) {
+ case 2:
+ case 4:
+ case 8:
+ torture_comment(tctx, "skipping level %d against samba\n", levels[i]);
+ continue;
+ default:
+ break;
+ }
+ }
+
+
torture_comment(tctx,
"Testing PrinterDriver%s '%s' add & delete level %d (full unc paths)\n",
d->ex ? "Ex" : "", info8.driver_name, levels[i]);
--
Samba Shared Repository
More information about the samba-cvs
mailing list