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 <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> Autobuild-User(master): David Disseldorp <dd...@samba.org> Autobuild-Date(master): Mon May 20 20:35:33 CEST 2013 on sn-devel-104 commit 8b7788c5d8ecbac3b8a41cdbb4fec7f0e73a9b76 Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit 00ee6a648b6290d6d3ddcb35fe5aa4c797222684 Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit fdf94747599e1461873fb2a5466f1e55d904333f Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit 9744bf519b1fcdab59ba7d55b2b664a6b44b30bd Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit e8797a3ecc03cbbdbc51c3952ac72fd663d5849c Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit cc153fe86f780d4aefe40999064b294b612e92d6 Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit c568a2e5c58d01fdd27156e84b361e49c4666fb1 Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit c51866eadf6159a6fa76af28be3b9a724ed28b46 Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit aa1e5f29af2a4560eecaac08ed62c2e63d3c8504 Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit 3d567f6a962a59cb69b702e7ed2c968246c26566 Author: Günther Deschner <g...@samba.org> Date: Sun Feb 24 14:06:59 2013 +0100 spoolss: add spoolss_MonitorContainer IDL. Guenther Signed-off-by: Günther Deschner <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit 1aafc844a721746b4feddbd2d547463a43821a2f Author: Günther Deschner <g...@samba.org> Date: Thu Jan 24 23:31:19 2013 +0100 spoolss: make RPC_PrintNamedProperty public Signed-off-by: Günther Deschner <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit cc38511903dbf34eeb358759f00341f60688acdb Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit ec29957e884d345009edac18ad362ba91de39f9c Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit 5a5ed68d0a92b36ddad9160deaf58314c13b2b49 Author: Günther Deschner <g...@samba.org> Date: Sat Jan 19 00:47:42 2013 +0100 spoolss: add idl for spoolss_RpcSendRecvBidiData. Guenther Signed-off-by: Günther Deschner <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit b072bb76dbdd96ee676c2bfbbffe58a187ef25ac Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit 69d9e3ef870fdd643bdc6fb4c893fa26d06fb2cf Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit 229108e26645e121fa5ec06911f573dce8198c07 Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@samba.org> commit 393ad20577c7fa66928ecb34bc8b323feb881ea5 Author: Günther Deschner <g...@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 <g...@samba.org> Reviewed-by: David Disseldorp <dd...@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