[SCM] Samba Shared Repository - branch master updated

David Disseldorp ddiss at samba.org
Mon May 20 12:36:02 MDT 2013


The branch, master has been updated
       via  f80d56a s4-torture: No need to disable rpc.spoolss.win test when compiled with MIT kerberos.
       via  8b7788c selftest: mark the spoolss add print processor tests as knownfail for now.
       via  00ee6a6 s4-torture: add simple tests for spoolss_{Add|Delete}PrintProcessor.
       via  fdf9474 doserr: add mapping for WERR_PRINT_PROCESSOR_ALREADY_INSTALLED.
       via  9744bf5 spoolss: fill in IDL for spoolss_DeletePrintProcessor.
       via  e8797a3 s4-torture: also deal with "Microsoft XPS Document Writer v4" as default driver.
       via  cc153fe s4-torture: add ndr test for spoolss_RpcSetJobNamedProperty.
       via  c568a2e s4-torture: add ndr test for spoolss_GetCorePrinterDrivers.
       via  c51866e s4-torture: add simple test for spoolss_RpcSendRecvBidiData.
       via  aa1e5f2 s4-torture: add test for spoolss_RpcEnumJobNamedProperties.
       via  3d567f6 spoolss: add spoolss_MonitorContainer IDL.
       via  1aafc84 spoolss: make RPC_PrintNamedProperty public
       via  cc38511 spoolss: fill in IDL for JobNamedProperty calls.
       via  ec29957 spoolss: make more container objects public for iremotewinspool.
       via  5a5ed68 spoolss: add idl for spoolss_RpcSendRecvBidiData.
       via  b072bb7 s4-torture: add missing NTSTATUS checks in test_AddJob().
       via  69d9e3e spoolss: add [ms_union] to spoolss.idl where appropriate.
       via  229108e spoolss: fix string types in spoolss_JTEXP.
       via  393ad20 spoolss: Fix two size elements in the devmode private spoolss_JTEXP struct.
      from  d7708fd talloc: Fix a typo

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


- Log -----------------------------------------------------------------
commit f80d56a1a0d62c5a1cdbe78ec3214b9f53e28946
Author: Günther Deschner <gd at samba.org>
Date:   Fri May 17 11:23:22 2013 +0200

    s4-torture: No need to disable rpc.spoolss.win test when compiled with MIT kerberos.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>
    
    Autobuild-User(master): David Disseldorp <ddiss at samba.org>
    Autobuild-Date(master): Mon May 20 20:35:33 CEST 2013 on sn-devel-104

commit 8b7788c5d8ecbac3b8a41cdbb4fec7f0e73a9b76
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 1 14:53:12 2013 +0100

    selftest: mark the spoolss add print processor tests as knownfail for now.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 00ee6a648b6290d6d3ddcb35fe5aa4c797222684
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 1 14:07:50 2013 +0100

    s4-torture: add simple tests for spoolss_{Add|Delete}PrintProcessor.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit fdf94747599e1461873fb2a5466f1e55d904333f
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 1 14:07:07 2013 +0100

    doserr: add mapping for WERR_PRINT_PROCESSOR_ALREADY_INSTALLED.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 9744bf519b1fcdab59ba7d55b2b664a6b44b30bd
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 1 02:34:11 2013 +0100

    spoolss: fill in IDL for spoolss_DeletePrintProcessor.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit e8797a3ecc03cbbdbc51c3952ac72fd663d5849c
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jan 31 22:06:20 2013 +0100

    s4-torture: also deal with "Microsoft XPS Document Writer v4" as default driver.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit cc153fe86f780d4aefe40999064b294b612e92d6
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jan 31 14:56:17 2013 +0100

    s4-torture: add ndr test for spoolss_RpcSetJobNamedProperty.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit c568a2e5c58d01fdd27156e84b361e49c4666fb1
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 22 10:17:27 2013 +0100

    s4-torture: add ndr test for spoolss_GetCorePrinterDrivers.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit c51866eadf6159a6fa76af28be3b9a724ed28b46
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jan 31 20:44:54 2013 +0100

    s4-torture: add simple test for spoolss_RpcSendRecvBidiData.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit aa1e5f29af2a4560eecaac08ed62c2e63d3c8504
Author: Günther Deschner <gd at samba.org>
Date:   Mon Jan 21 22:09:22 2013 +0100

    s4-torture: add test for spoolss_RpcEnumJobNamedProperties.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 3d567f6a962a59cb69b702e7ed2c968246c26566
Author: Günther Deschner <gd at samba.org>
Date:   Sun Feb 24 14:06:59 2013 +0100

    spoolss: add spoolss_MonitorContainer IDL.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 1aafc844a721746b4feddbd2d547463a43821a2f
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jan 24 23:31:19 2013 +0100

    spoolss: make RPC_PrintNamedProperty public
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit cc38511903dbf34eeb358759f00341f60688acdb
Author: Günther Deschner <gd at samba.org>
Date:   Mon Jan 21 21:37:12 2013 +0100

    spoolss: fill in IDL for JobNamedProperty calls.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit ec29957e884d345009edac18ad362ba91de39f9c
Author: Günther Deschner <gd at samba.org>
Date:   Sat Jan 19 00:20:42 2013 +0100

    spoolss: make more container objects public for iremotewinspool.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 5a5ed68d0a92b36ddad9160deaf58314c13b2b49
Author: Günther Deschner <gd at samba.org>
Date:   Sat Jan 19 00:47:42 2013 +0100

    spoolss: add idl for spoolss_RpcSendRecvBidiData.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit b072bb76dbdd96ee676c2bfbbffe58a187ef25ac
Author: Günther Deschner <gd at samba.org>
Date:   Tue Feb 5 16:10:34 2013 +0100

    s4-torture: add missing NTSTATUS checks in test_AddJob().
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 69d9e3ef870fdd643bdc6fb4c893fa26d06fb2cf
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jan 30 20:05:51 2013 +0100

    spoolss: add [ms_union] to spoolss.idl where appropriate.
    
    Normally we would activate [ms_union] for the entire interface but given the
    fact we use this IDL file also for custom-marshalled structures we would
    generate union arm alignment also for the custom-marshalled unions where they
    are inappropriate. Thus, only enable [ms_union] only for unions that are part of
    the MS-RPRN IDL.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 229108e26645e121fa5ec06911f573dce8198c07
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jan 30 15:55:18 2013 +0100

    spoolss: fix string types in spoolss_JTEXP.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

commit 393ad20577c7fa66928ecb34bc8b323feb881ea5
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 29 21:57:58 2013 +0100

    spoolss: Fix two size elements in the devmode private spoolss_JTEXP struct.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    
    Reviewed-by: David Disseldorp <ddiss at samba.org>

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

Summary of changes:
 libcli/util/doserr.c                        |    1 +
 librpc/idl/spoolss.idl                      |  211 +++++++++++--
 selftest/knownfail                          |    1 +
 source3/rpc_server/spoolss/srv_spoolss_nt.c |    6 +-
 source4/rpc_server/spoolss/dcesrv_spoolss.c |    6 +-
 source4/torture/ndr/spoolss.c               |   73 +++++
 source4/torture/rpc/rpc.c                   |    2 +-
 source4/torture/rpc/spoolss.c               |  453 ++++++++++++++++++++++++++-
 source4/torture/rpc/spoolss_win.c           |    3 -
 source4/torture/wscript_build               |    4 +-
 10 files changed, 714 insertions(+), 46 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/util/doserr.c b/libcli/util/doserr.c
index a0c152d..f16db42 100644
--- a/libcli/util/doserr.c
+++ b/libcli/util/doserr.c
@@ -309,6 +309,7 @@ static const struct werror_code_struct dos_errs[] =
 	{ "WERR_PASSWORD_RESTRICTION", WERR_PASSWORD_RESTRICTION },
 	{ "WERR_WRONG_PASSWORD", WERR_WRONG_PASSWORD },
 	{ "WERR_CLASS_NOT_REGISTERED", WERR_CLASS_NOT_REGISTERED },
+	{ "WERR_PRINT_PROCESSOR_ALREADY_INSTALLED", WERR_PRINT_PROCESSOR_ALREADY_INSTALLED },
 	/*****************************************************************************
 	 Auto-generated Win32 error from:
 	 http://msdn.microsoft.com/en-us/library/cc231199%28PROT.10%29.aspx
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index a43449b..e7fecfe 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -28,7 +28,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		uint16 millisecond;
 	} spoolss_Time;
 
-	typedef struct {
+	typedef [public] struct {
 		[value(ndr_size_spoolss_Time(time, ndr->flags))] uint32 size;
 		[unique] spoolss_Time *time;
 	} spoolss_TimeCtr;
@@ -427,10 +427,10 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		uint32 dwSize;
 		[value(SPOOLSS_DM_SIGNATURE_JTEXP)] spoolss_DM_Signature dwSignature;
 		[value(0)] uint32 dwVersion;
-		[value(16)] uint32 wJTHdrSize;
-		uint32 wCoreMFOSize;
-		[string,charset(UTF16)] uint16 *ModelName;
-		nstring_array FeatureOptionPairs;
+		[value(16)] uint16 wJTHdrSize;
+		uint16 wCoreMFOSize; /* must be sizeof the two following elements, must be dwSize - 16*/
+		nstring ModelName;
+		[flag(STR_UTF8|STR_NULLTERM|NDR_REMAINING)] string_array FeatureOptionPairs;
 	} spoolss_JTEXP;
 
 	/* Device Mode Extra Data: OEM_DMEXTRA */
@@ -885,7 +885,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
 	/******************/
 	/* Function: 0x01 */
-	typedef struct {
+	typedef [public] struct {
 		[value(_ndr_size_spoolss_DeviceMode(devmode, ndr->flags))] uint32 _ndr_size;
 		[subcontext(4),subcontext_size(_ndr_size)] spoolss_DeviceMode *devmode;
 	} spoolss_DevmodeContainer;
@@ -1053,7 +1053,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		uint32 size_high;
 	} spoolss_SetJobInfo4;
 
-	typedef [public] union {
+	typedef [ms_union,public] union {
 		[case(1)] spoolss_SetJobInfo1 *info1;
 		[case(2)] spoolss_SetJobInfo2 *info2;
 		[case(3)] spoolss_JobInfo3    *info3;
@@ -1061,7 +1061,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		[default];
 	} spoolss_SetJobInfo;
 
-	typedef struct {
+	typedef [public] struct {
 		uint32 level;
 		[switch_is(level)] spoolss_SetJobInfo info;
 	} spoolss_JobInfoContainer;
@@ -1251,7 +1251,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		uint32 *devmode_ptr;
 	} spoolss_SetPrinterInfo9;
 
-	typedef [switch_type(uint32)] union {
+	typedef [ms_union,switch_type(uint32)] union {
 		[case(0)] spoolss_SetPrinterInfo0 *info0;
 		[case(1)] spoolss_SetPrinterInfo1 *info1;
 		[case(2)] spoolss_SetPrinterInfo2 *info2;
@@ -1265,7 +1265,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		[default];
 	} spoolss_SetPrinterInfo;
 
-	typedef struct {
+	typedef [public] struct {
 		uint32 level;
 		[switch_is(level)] spoolss_SetPrinterInfo info;
 	} spoolss_SetPrinterInfoCtr;
@@ -1428,7 +1428,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		hyper min_inbox_driver_ver_version;
 	} spoolss_AddDriverInfo8;
 
-	typedef [switch_type(uint32)] union {
+	typedef [ms_union,switch_type(uint32)] union {
 		[case(1)] spoolss_AddDriverInfo1 *info1;
 		[case(2)] spoolss_AddDriverInfo2 *info2;
 		[case(3)] spoolss_AddDriverInfo3 *info3;
@@ -1437,7 +1437,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		[case(8)] spoolss_AddDriverInfo8 *info8;
 	} spoolss_AddDriverInfo;
 
-	typedef struct {
+	typedef [public] struct {
 		uint32 level;
 		[switch_is(level)] spoolss_AddDriverInfo info;
 	} spoolss_AddDriverInfoCtr;
@@ -1746,14 +1746,14 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		[string,charset(UTF16)] uint16 *datatype;
 	} spoolss_DocumentInfo1;
 
-	typedef [switch_type(uint32)] union {
+	typedef [ms_union,switch_type(uint32)] union {
 		[case(1)] spoolss_DocumentInfo1 *info1;
 		[case(2)]; /* TODO */
 		[case(3)]; /* TODO */
 		[default];
 	} spoolss_DocumentInfo;
 
-	typedef struct {
+	typedef [public] struct {
 		uint32 level;
 		[switch_is(level)] spoolss_DocumentInfo info;
 	} spoolss_DocumentInfoCtr;
@@ -2047,12 +2047,12 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		uint32 lang_id;
 	} spoolss_AddFormInfo2;
 
-	typedef [switch_type(uint32)] union {
+	typedef [ms_union,switch_type(uint32)] union {
 		[case(1)] spoolss_AddFormInfo1 *info1;
 		[case(2)] spoolss_AddFormInfo2 *info2;
 	} spoolss_AddFormInfo;
 
-	typedef struct {
+	typedef [public] struct {
 		uint32 level;
 		[switch_is(level)] spoolss_AddFormInfo info;
 	} spoolss_AddFormInfoCtr;
@@ -2279,14 +2279,14 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		DATA_BLOB monitor_data; /* relative ?? */
 	} spoolss_SetPortInfoFF;
 
-	typedef [switch_type(uint32)] union {
+	typedef [ms_union,switch_type(uint32)] union {
 		[case(1)] spoolss_SetPortInfo1 *info1;
 		[case(2)] spoolss_SetPortInfo2 *info2;
 		[case(3)] spoolss_SetPortInfo3 *info3;
 		[case(0xff)] spoolss_SetPortInfoFF *infoFF;
 	} spoolss_SetPortInfo;
 
-	typedef struct {
+	typedef [public] struct {
 		uint32 level;
 		[switch_is(level)] spoolss_SetPrinterInfo info;
 	} spoolss_SetPortInfoContainer;
@@ -2365,6 +2365,27 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
 	/******************/
 	/* Function: 0x2e */
+
+	typedef struct {
+		[string,charset(URF16)] uint16 *monitor_name;
+	} spoolss_AddMonitorInfo1;
+
+	typedef struct {
+		[string,charset(URF16)] uint16 *monitor_name;
+		[string,charset(URF16)] uint16 *environment;
+		[string,charset(URF16)] uint16 *dll_name;
+	} spoolss_AddMonitorInfo2;
+
+	typedef [ms_union,switch_type(uint32)] union {
+		[case(1)] spoolss_AddMonitorInfo1 *info1;
+		[case(2)] spoolss_AddMonitorInfo2 *info2;
+	} spoolss_AddMonitorInfo;
+
+	typedef [public] struct {
+		uint32 level;
+		[switch_is(level)] spoolss_MonitorInfo info;
+	} spoolss_MonitorContainer;
+
 	[todo] WERROR spoolss_AddMonitor(
 	);
 
@@ -2375,7 +2396,10 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
 	/******************/
 	/* Function: 0x30 */
-	[todo] WERROR spoolss_DeletePrintProcessor(
+	WERROR spoolss_DeletePrintProcessor(
+		[in,unique] [string,charset(UTF16)] uint16 *server,
+		[in,unique] [string,charset(UTF16)] uint16 *architecture,
+		[in] [string,charset(UTF16)] uint16 print_processor_name[]
 	);
 
 	/******************/
@@ -2549,7 +2573,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 	/******************/
 	/* Function: 0x3d */
 
-	typedef struct {
+	typedef [public] struct {
 		uint32 monitor_data_size;
 		[size_is(monitor_data_size),unique] uint8 *monitor_data;
 	} spoolss_PortVarContainer;
@@ -2660,7 +2684,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		PRINTER_NOTIFY_OPTIONS_REFRESH	= 0x00000001
 	} spoolssNotifyOptionFlags;
 
-	typedef struct {
+	typedef [public] struct {
 		[value(2)] uint32 version;
 		spoolssNotifyOptionFlags flags;
 		uint32 count;
@@ -2692,7 +2716,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		NOTIFY_TABLE_SECURITYDESCRIPTOR = 0x0005
 	} spoolss_NotifyTable;
 
-	typedef [switch_type(uint32)] union {
+	typedef [ms_union, switch_type(uint32)] union {
 		[case(1)] uint32 integer[2];
 		[case(2)] spoolss_NotifyString string;
 		[case(3)] spoolss_DevmodeContainer devmode;
@@ -2708,14 +2732,14 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		[switch_is(variable_type)] spoolss_NotifyData data;
 	} spoolss_Notify;
 
-	typedef struct {
+	typedef [public] struct {
 		[value(2)] uint32 version;
 		uint32 flags;
 		uint32 count;
 		[size_is(count)] spoolss_Notify notifies[];
 	} spoolss_NotifyInfo;
 
-	typedef [switch_type(uint32)] union {
+	typedef [ms_union,switch_type(uint32)] union {
 		[case(0)] spoolss_NotifyInfo *info0;
 	} spoolss_ReplyPrinterInfo;
 
@@ -2775,13 +2799,13 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 		udlong reserved;
 	} spoolss_UserLevel3;
 
-	typedef [switch_type(uint32)] union {
+	typedef [ms_union,switch_type(uint32)] union {
 		[case(1)]  spoolss_UserLevel1 *level1;
 		[case(2)]  spoolss_UserLevel2 *level2;
 		[case(3)]  spoolss_UserLevel3 *level3;
 	} spoolss_UserLevel;
 
-	typedef struct {
+	typedef [public] struct {
 		uint32 level;
 		[switch_is(level)] spoolss_UserLevel user_info;
 	} spoolss_UserLevelCtr;
@@ -3158,7 +3182,76 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
 	/******************/
 	/* Function: 0x61 */
-	[todo] WERROR spoolss_61(
+
+	const string BIDI_ACTION_ENUM_SCHEMA = "EnumSchema";
+	const string BIDI_ACTION_GET = "Get";
+	const string BIDI_ACTION_SET = "Set";
+	const string BIDI_ACTION_GET_ALL = "GetAll";
+
+	typedef enum {
+		BIDI_NULL	= 0x00000000,
+		BIDI_INT	= 0x00000001,
+		BIDI_FLOAT	= 0x00000002,
+		BIDI_BOOL	= 0x00000003,
+		BIDI_STRING	= 0x00000004,
+		BIDI_TEXT	= 0x00000005,
+		BIDI_ENUM	= 0x00000006,
+		BIDI_BLOB	= 0x00000007
+	} BIDI_TYPE;
+
+	typedef struct {
+		uint32 cbBuf;
+		[size_is(cbBuf), unique] uint8 *pszString;
+	} RPC_BINARY_CONTAINER;
+
+	typedef [ms_union,switch_type(uint32)] union {
+		[case(BIDI_NULL)]	uint32 bData;
+		[case(BIDI_BOOL)]	uint32 bData;
+		[case(BIDI_INT)] 	uint32 iData;
+		[case(BIDI_STRING)]	[unique] [string,charset(UTF16)] uint16 *sData;
+		[case(BIDI_TEXT)]	[unique] [string,charset(UTF16)] uint16 *sData;
+		[case(BIDI_ENUM)]	[unique] [string,charset(UTF16)] uint16 *sData;
+		/*[case(BIDI_FLOAT)]	float fData;*/
+		[case(BIDI_BLOB)]	RPC_BINARY_CONTAINER biData;
+	} RPC_BIDI_DATA_u;
+
+	typedef struct {
+		uint32 dwBidiType;
+		[switch_is(dwBidiType)] RPC_BIDI_DATA_u u;
+	} RPC_BIDI_DATA;
+
+	typedef struct {
+		uint32 dwReqNumber;
+		[unique] [string,charset(UTF16)] uint16 *pSchema;
+		RPC_BIDI_DATA data;
+	} RPC_BIDI_REQUEST_DATA;
+
+	typedef [public] struct {
+		[value(1)] uint32 Version;
+		uint32 Flags;
+		uint32 Count;
+		[size_is(Count), unique] RPC_BIDI_REQUEST_DATA *aData[];
+	} RPC_BIDI_REQUEST_CONTAINER;
+
+	typedef struct {
+		uint32 dwResult;
+		uint32 dwReqNumber;
+		[unique] [string,charset(UTF16)] uint16 *pSchema;
+		RPC_BIDI_DATA data;
+	} RPC_BIDI_RESPONSE_DATA;
+
+	typedef [public] struct {
+		[value(1)] uint32 Version;
+		uint32 Flags;
+		uint32 Count;
+		[size_is(Count), unique] RPC_BIDI_RESPONSE_DATA *aData[];
+	} RPC_BIDI_RESPONSE_CONTAINER;
+
+	WERROR spoolss_RpcSendRecvBidiData(
+		[in] policy_handle hPrinter,
+		[in,unique] [string,charset(UTF16)] uint16 *pAction,
+		[in] RPC_BIDI_REQUEST_CONTAINER *pReqData,
+		[out] RPC_BIDI_RESPONSE_CONTAINER **ppRespData
 	);
 
 	/******************/
@@ -3183,14 +3276,14 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
 	/******************/
 	/* Function: 0x66 */
-	typedef struct {
+	typedef [public] struct {
 		GUID core_driver_guid;
 		NTTIME driver_date;
 		hyper driver_version;
 		[charset(UTF8)] uint8 formname[520];
 	} spoolss_CorePrinterDriver;
 
-	WERROR spoolss_GetCorePrinterDrivers(
+	[public] WERROR spoolss_GetCorePrinterDrivers(
 		[in,unique] [string,charset(UTF16)] uint16 *servername,
 		[in,ref] [string,charset(UTF16)] uint16 *architecture,
 		[in] uint32 core_driver_size,
@@ -3243,21 +3336,73 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
 	/******************/
 	/* Function: 0x6e */
-	[todo] WERROR spoolss_RpcGetJobNamedPropertyValue(
+
+	const string SPLFILE_CONTENT_TYPE_PROP_NAME		= "Spool File Contents";
+	const string SPLFILE_CONTENT_TYPE_XPS_MS		= "TYPE_XPS_MS";
+	const string SPLFILE_CONTENT_TYPE_XPS_OPEN		= "TYPE_XPS_OPEN";
+	const string SPLFILE_CONTENT_TYPE_PDL_POSTSCRIPT	= "TYPE_PDL_POSTSCRIPT";
+	const string SPLFILE_CONTENT_TYPE_PDL_UNKNOWN		= "TYPE_PDL_UNKNOWN";
+
+	typedef enum {
+		kRpcPropertyTypeString	= 1,
+		kRpcPropertyTypeInt32	= 2,
+		kRpcPropertyTypeInt64	= 3,
+		kRpcPropertyTypeByte	= 4,
+		kRpcPropertyTypeBuffer	= 5
+	} RPC_EPrintPropertyType;
+
+	typedef struct {
+		uint32 cbBuf;
+		[size_is(cbBuf)] uint8 *pBuf;
+	} propertyBlob;
+
+	typedef [ms_union,switch_type(RPC_EPrintPropertyType)] union {
+		[case(kRpcPropertyTypeString)] [string,charset(UTF16)] uint16 *propertyString;
+		[case(kRpcPropertyTypeInt32)] uint32 propertyInt32;
+		[case(kRpcPropertyTypeInt64)] hyper propertyInt64;
+		[case(kRpcPropertyTypeByte)] uint8 propertyByte;
+		[case(kRpcPropertyTypeBuffer)] propertyBlob propertyBlob;
+	} RPC_PrintPropertyValueUnion;
+
+	typedef [public] struct {
+		RPC_EPrintPropertyType ePropertyType;
+		[switch_is(ePropertyType)] RPC_PrintPropertyValueUnion value;
+	} RPC_PrintPropertyValue;
+
+	typedef [public] struct {
+		[string,charset(UTF16)] uint16 *propertyName;
+		RPC_PrintPropertyValue propertyValue;
+	} RPC_PrintNamedProperty;
+
+	WERROR spoolss_RpcGetJobNamedPropertyValue(
+		[in,ref] policy_handle *hPrinter,
+		[in] uint32 JobId,
+		[in] [string,charset(UTF16)] uint16 *pszName,
+		[out,ref] RPC_PrintPropertyValue *pValue
 	);
 
 	/******************/
 	/* Function: 0x6f */
-	[todo] WERROR spoolss_RpcSetJobNamedProperty(
+	[public] WERROR spoolss_RpcSetJobNamedProperty(
+		[in,ref] policy_handle *hPrinter,
+		[in] uint32 JobId,
+		[in,ref] RPC_PrintNamedProperty *pProperty
 	);
 
 	/******************/
 	/* Function: 0x70 */
-	[todo] WERROR spoolss_RpcDeleteJobNamedProperty(
+	WERROR spoolss_RpcDeleteJobNamedProperty(
+		[in,ref] policy_handle *hPrinter,
+		[in] uint32 JobId,
+		[in] [string,charset(UTF16)] uint16 *pszName
 	);
 
 	/******************/
 	/* Function: 0x71 */
-	[todo] WERROR spoolss_RpcEnumJobNamedProperties(
+	WERROR spoolss_RpcEnumJobNamedProperties(
+		[in,ref] policy_handle *hPrinter,
+		[in] uint32 JobId,
+		[out,ref] uint32 *pcProperties,
+		[out,ref,size_is(,*pcProperties)] RPC_PrintNamedProperty **ppProperties
 	);
 }
diff --git a/selftest/knownfail b/selftest/knownfail
index a7f347e..a06bab6 100644
--- a/selftest/knownfail
+++ b/selftest/knownfail
@@ -215,6 +215,7 @@
 ^samba3.raw.session.*reauth2 # maybe fix this?
 ^samba3.rpc.spoolss.printer.addprinter.driver_info_winreg # knownfail or flapping?
 ^samba3.rpc.spoolss.printer.addprinterex.driver_info_winreg # knownfail or flapping?
+^samba3.rpc.spoolss.printserver.*.add_processor\(.*\)$
 #
 # The following tests fail against plugin_s4_dc (aka s3fs) currently.
 # These need to be examined and either fixed or correctly categorised.
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index 891f429..7482443 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -10852,11 +10852,11 @@ WERROR _spoolss_60(struct pipes_struct *p,
 }
 
 /****************************************************************
- _spoolss_61
+ _spoolss_RpcSendRecvBidiData
 ****************************************************************/
 
-WERROR _spoolss_61(struct pipes_struct *p,
-		   struct spoolss_61 *r)
+WERROR _spoolss_RpcSendRecvBidiData(struct pipes_struct *p,
+				    struct spoolss_RpcSendRecvBidiData *r)
 {
 	p->fault_state = DCERPC_FAULT_OP_RNG_ERROR;
 	return WERR_NOT_SUPPORTED;
diff --git a/source4/rpc_server/spoolss/dcesrv_spoolss.c b/source4/rpc_server/spoolss/dcesrv_spoolss.c
index e3df4e0..cb892a6 100644
--- a/source4/rpc_server/spoolss/dcesrv_spoolss.c
+++ b/source4/rpc_server/spoolss/dcesrv_spoolss.c
@@ -1592,10 +1592,10 @@ static WERROR dcesrv_spoolss_60(struct dcesrv_call_state *dce_call, TALLOC_CTX *
 
 
 /*
-  spoolss_61
+  spoolss_RpcSendRecvBidiData
 */
-static WERROR dcesrv_spoolss_61(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-		       struct spoolss_61 *r)
+static WERROR dcesrv_spoolss_RpcSendRecvBidiData(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+		       struct spoolss_RpcSendRecvBidiData *r)
 {
 	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }
diff --git a/source4/torture/ndr/spoolss.c b/source4/torture/ndr/spoolss.c
index 52a5b03..5818fdf 100644
--- a/source4/torture/ndr/spoolss.c
+++ b/source4/torture/ndr/spoolss.c
@@ -1699,6 +1699,75 @@ static const uint8_t setprinter_64_req_data[] = {
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 
+static const uint8_t getcoreprinterdrivers_64_req_data[] = {
+	0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x5c, 0x00,
+	0x31, 0x00, 0x39, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x36, 0x00,
+	0x38, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x38, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x64, 0x00,
+	0x6f, 0x00, 0x77, 0x00, 0x73, 0x00, 0x20, 0x00, 0x78, 0x00, 0x36, 0x00,
+	0x34, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x44, 0x00,
+	0x32, 0x00, 0x30, 0x00, 0x45, 0x00, 0x41, 0x00, 0x33, 0x00, 0x37, 0x00,
+	0x32, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x44, 0x00, 0x33, 0x00, 0x35, 0x00,
+	0x2d, 0x00, 0x34, 0x00, 0x39, 0x00, 0x35, 0x00, 0x30, 0x00, 0x2d, 0x00,
+	0x39, 0x00, 0x45, 0x00, 0x44, 0x00, 0x38, 0x00, 0x2d, 0x00, 0x41, 0x00,
+	0x36, 0x00, 0x33, 0x00, 0x33, 0x00, 0x35, 0x00, 0x41, 0x00, 0x46, 0x00,
+	0x45, 0x00, 0x37, 0x00, 0x39, 0x00, 0x46, 0x00, 0x30, 0x00, 0x7d, 0x00,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list