[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-186-gc441668

Günther Deschner gd at samba.org
Thu Jul 2 20:01:18 GMT 2009


The branch, master has been updated
       via  c4416684f148f494a103fc85a0d54d0e16059735 (commit)
       via  f729abaa94e4b77fe2028d8d5ee38f9eff462fd6 (commit)
       via  a45ec4db736b0df002db0649768f851fa35fee9e (commit)
      from  f1dbd58a99a5dc47065f3ad6d248150600586ac7 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit c4416684f148f494a103fc85a0d54d0e16059735
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jul 2 19:39:36 2009 +0200

    spoolss: the flags in spoolss_PrinterInfo1 are in fact spoolss_PrinterAttributes.
    
    Guenther

commit f729abaa94e4b77fe2028d8d5ee38f9eff462fd6
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jul 1 22:52:49 2009 +0200

    s4-smbtorture: fix getjob test in RPC-SPOOLSS.
    
    Guenther

commit a45ec4db736b0df002db0649768f851fa35fee9e
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jul 1 22:52:05 2009 +0200

    doserrors: print out some more werrors.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 libcli/util/doserr.c          |    5 +++
 librpc/gen_ndr/ndr_spoolss.c  |   80 ++++++++++++++++++++--------------------
 librpc/gen_ndr/ndr_spoolss.h  |    2 +-
 librpc/gen_ndr/spoolss.h      |   14 ++++----
 librpc/idl/spoolss.idl        |   14 ++++----
 source4/torture/rpc/spoolss.c |    5 +++
 6 files changed, 65 insertions(+), 55 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/util/doserr.c b/libcli/util/doserr.c
index ed220cc..ff0946f 100644
--- a/libcli/util/doserr.c
+++ b/libcli/util/doserr.c
@@ -52,6 +52,10 @@ static const struct werror_code_struct dos_errs[] =
 	{ "WERR_NO_MORE_ITEMS", WERR_NO_MORE_ITEMS },
 	{ "WERR_MORE_DATA", WERR_MORE_DATA },
 	{ "WERR_UNKNOWN_PRINTER_DRIVER", WERR_UNKNOWN_PRINTER_DRIVER },
+	{ "WERR_UNKNOWN_PRINTPROCESSOR", WERR_UNKNOWN_PRINTPROCESSOR },
+	{ "WERR_INVALID_SEPARATOR_FILE", WERR_INVALID_SEPARATOR_FILE },
+	{ "WERR_INVALID_PRIORITY", WERR_INVALID_PRIORITY },
+	{ "WERR_UNKNOWN_PORT", WERR_UNKNOWN_PORT },
 	{ "WERR_INVALID_PRINTER_NAME", WERR_INVALID_PRINTER_NAME },
 	{ "WERR_PRINTER_ALREADY_EXISTS", WERR_PRINTER_ALREADY_EXISTS },
 	{ "WERR_INVALID_DATATYPE", WERR_INVALID_DATATYPE },
@@ -141,6 +145,7 @@ static const struct werror_code_struct dos_errs[] =
 	{ "WERR_SERVER_UNAVAILABLE", WERR_SERVER_UNAVAILABLE },
 	{ "WERR_INVALID_USER_BUFFER", WERR_INVALID_USER_BUFFER },
 	{ "WERR_NO_TRUST_SAM_ACCOUNT", WERR_NO_TRUST_SAM_ACCOUNT },
+	{ "WERR_INVALID_PRINTER_COMMAND", WERR_INVALID_PRINTER_COMMAND },
 	{ "WERR_CLASS_NOT_REGISTERED", WERR_CLASS_NOT_REGISTERED },
 	{ "WERR_NO_SHUTDOWN_IN_PROGRESS", WERR_NO_SHUTDOWN_IN_PROGRESS },
 	{ "WERR_SHUTDOWN_ALREADY_IN_PROGRESS", WERR_SHUTDOWN_ALREADY_IN_PROGRESS },
diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index d4195e4..fca6228 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -763,11 +763,48 @@ _PUBLIC_ void ndr_print_spoolss_EnumPrinterFlags(struct ndr_print *ndr, const ch
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_spoolss_PrinterAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_PrinterAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_PrinterAttributes(struct ndr_print *ndr, const char *name, uint32_t r)
+{
+	ndr_print_uint32(ndr, name, r);
+	ndr->depth++;
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_QUEUED", PRINTER_ATTRIBUTE_QUEUED, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DIRECT", PRINTER_ATTRIBUTE_DIRECT, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DEFAULT", PRINTER_ATTRIBUTE_DEFAULT, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_SHARED", PRINTER_ATTRIBUTE_SHARED, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_NETWORK", PRINTER_ATTRIBUTE_NETWORK, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_HIDDEN", PRINTER_ATTRIBUTE_HIDDEN, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_LOCAL", PRINTER_ATTRIBUTE_LOCAL, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_ENABLE_DEVQ", PRINTER_ATTRIBUTE_ENABLE_DEVQ, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS", PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST", PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_WORK_OFFLINE", PRINTER_ATTRIBUTE_WORK_OFFLINE, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_ENABLE_BIDI", PRINTER_ATTRIBUTE_ENABLE_BIDI, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_RAW_ONLY", PRINTER_ATTRIBUTE_RAW_ONLY, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_PUBLISHED", PRINTER_ATTRIBUTE_PUBLISHED, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_FAX", PRINTER_ATTRIBUTE_FAX, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_TS", PRINTER_ATTRIBUTE_TS, r);
+	ndr->depth--;
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo1 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_spoolss_EnumPrinterFlags(ndr, NDR_SCALARS, r->flags));
+		NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->flags));
 		{
 			uint32_t _flags_save_string = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
@@ -829,7 +866,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, i
 	TALLOC_CTX *_mem_save_comment_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_spoolss_EnumPrinterFlags(ndr, NDR_SCALARS, &r->flags));
+		NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->flags));
 		{
 			uint32_t _flags_save_string = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
@@ -921,7 +958,7 @@ _PUBLIC_ void ndr_print_spoolss_PrinterInfo1(struct ndr_print *ndr, const char *
 {
 	ndr_print_struct(ndr, name, "spoolss_PrinterInfo1");
 	ndr->depth++;
-	ndr_print_spoolss_EnumPrinterFlags(ndr, "flags", r->flags);
+	ndr_print_spoolss_PrinterAttributes(ndr, "flags", r->flags);
 	ndr_print_ptr(ndr, "description", r->description);
 	ndr->depth++;
 	if (r->description) {
@@ -948,43 +985,6 @@ _PUBLIC_ size_t ndr_size_spoolss_PrinterInfo1(const struct spoolss_PrinterInfo1
 	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo1, ic);
 }
 
-static enum ndr_err_code ndr_push_spoolss_PrinterAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_spoolss_PrinterAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_spoolss_PrinterAttributes(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_QUEUED", PRINTER_ATTRIBUTE_QUEUED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DIRECT", PRINTER_ATTRIBUTE_DIRECT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DEFAULT", PRINTER_ATTRIBUTE_DEFAULT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_SHARED", PRINTER_ATTRIBUTE_SHARED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_NETWORK", PRINTER_ATTRIBUTE_NETWORK, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_HIDDEN", PRINTER_ATTRIBUTE_HIDDEN, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_LOCAL", PRINTER_ATTRIBUTE_LOCAL, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_ENABLE_DEVQ", PRINTER_ATTRIBUTE_ENABLE_DEVQ, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS", PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST", PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_WORK_OFFLINE", PRINTER_ATTRIBUTE_WORK_OFFLINE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_ENABLE_BIDI", PRINTER_ATTRIBUTE_ENABLE_BIDI, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_RAW_ONLY", PRINTER_ATTRIBUTE_RAW_ONLY, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_PUBLISHED", PRINTER_ATTRIBUTE_PUBLISHED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_FAX", PRINTER_ATTRIBUTE_FAX, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_TS", PRINTER_ATTRIBUTE_TS, r);
-	ndr->depth--;
-}
-
 _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo2 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
diff --git a/librpc/gen_ndr/ndr_spoolss.h b/librpc/gen_ndr/ndr_spoolss.h
index 204aad8..1e6baa4 100644
--- a/librpc/gen_ndr/ndr_spoolss.h
+++ b/librpc/gen_ndr/ndr_spoolss.h
@@ -225,11 +225,11 @@ size_t ndr_size_spoolss_DeviceMode(const struct spoolss_DeviceMode *r, struct sm
 enum ndr_err_code ndr_push_spoolss_EnumPrinterFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
 enum ndr_err_code ndr_pull_spoolss_EnumPrinterFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
 void ndr_print_spoolss_EnumPrinterFlags(struct ndr_print *ndr, const char *name, uint32_t r);
+void ndr_print_spoolss_PrinterAttributes(struct ndr_print *ndr, const char *name, uint32_t r);
 enum ndr_err_code ndr_push_spoolss_PrinterInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo1 *r);
 enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo1 *r);
 void ndr_print_spoolss_PrinterInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo1 *r);
 size_t ndr_size_spoolss_PrinterInfo1(const struct spoolss_PrinterInfo1 *r, struct smb_iconv_convenience *ic, int flags);
-void ndr_print_spoolss_PrinterAttributes(struct ndr_print *ndr, const char *name, uint32_t r);
 enum ndr_err_code ndr_push_spoolss_PrinterInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo2 *r);
 enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo2 *r);
 void ndr_print_spoolss_PrinterInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo2 *r);
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index a9f7aaf..9573460 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -296,13 +296,6 @@ struct spoolss_DeviceMode {
 #define PRINTER_ENUM_ICON8 ( 0x00800000 )
 #define PRINTER_ENUM_HIDE ( 0x01000000 )
 
-struct spoolss_PrinterInfo1 {
-	uint32_t flags;
-	const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
-	const char * name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
-	const char * comment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
-}/* [gensize,public] */;
-
 /* bitmap spoolss_PrinterAttributes */
 #define PRINTER_ATTRIBUTE_QUEUED ( 0x00000001 )
 #define PRINTER_ATTRIBUTE_DIRECT ( 0x00000002 )
@@ -321,6 +314,13 @@ struct spoolss_PrinterInfo1 {
 #define PRINTER_ATTRIBUTE_FAX ( 0x00004000 )
 #define PRINTER_ATTRIBUTE_TS ( 0x00008000 )
 
+struct spoolss_PrinterInfo1 {
+	uint32_t flags;
+	const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+	const char * name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+	const char * comment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+}/* [gensize,public] */;
+
 struct spoolss_PrinterInfo2 {
 	const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
 	const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index f306462..7dad7c9 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -248,13 +248,6 @@ import "misc.idl", "security.idl", "winreg.idl";
 					   PRINTER_ENUM_ICON7 |
 					   PRINTER_ENUM_ICON8); /* 0x00ff0000 */
 
-	typedef [public,gensize] struct {
-		spoolss_EnumPrinterFlags flags;
-		[relative] nstring *description;
-		[relative] nstring *name;
-		[relative] nstring *comment;
-	} spoolss_PrinterInfo1;
-
 	typedef bitmap {
 		PRINTER_ATTRIBUTE_QUEUED		= 0x00000001,
 		PRINTER_ATTRIBUTE_DIRECT		= 0x00000002,
@@ -275,6 +268,13 @@ import "misc.idl", "security.idl", "winreg.idl";
 	} spoolss_PrinterAttributes;
 
 	typedef [public,gensize] struct {
+		spoolss_PrinterAttributes flags;
+		[relative] nstring *description;
+		[relative] nstring *name;
+		[relative] nstring *comment;
+	} spoolss_PrinterInfo1;
+
+	typedef [public,gensize] struct {
 		[relative] nstring *servername;
 		[relative] nstring *printername;
 		[relative] nstring *sharename;
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 1c4b8ed..10e18e1 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -1131,6 +1131,7 @@ static bool test_GetJob(struct torture_context *tctx,
 {
 	NTSTATUS status;
 	struct spoolss_GetJob r;
+	union spoolss_JobInfo info;
 	uint32_t needed;
 	uint32_t levels[] = {1, 2 /* 3, 4 */};
 	uint32_t i;
@@ -1141,6 +1142,7 @@ static bool test_GetJob(struct torture_context *tctx,
 	r.in.buffer = NULL;
 	r.in.offered = 0;
 	r.out.needed = &needed;
+	r.out.info = &info;
 
 	torture_comment(tctx, "Testing GetJob level %d\n", r.in.level);
 
@@ -1151,8 +1153,11 @@ static bool test_GetJob(struct torture_context *tctx,
 
 		torture_comment(tctx, "Testing GetJob level %d\n", r.in.level);
 
+		needed = 0;
+
 		r.in.level = levels[i];
 		r.in.offered = 0;
+		r.in.buffer = NULL;
 
 		status = dcerpc_spoolss_GetJob(p, tctx, &r);
 		torture_assert_ntstatus_ok(tctx, status, "GetJob failed");


-- 
Samba Shared Repository


More information about the samba-cvs mailing list