svn commit: samba-web r1350 - in trunk/DTD: .
Author: gd Date: 2009-12-23 02:23:06 -0700 (Wed, 23 Dec 2009) New Revision: 1350 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=samba-webrev=1350 Log: DTD: bring public copy of samba.entities uptodate with the copy in docs-xml. Guenther Modified: trunk/DTD/samba.entities Changeset: Modified: trunk/DTD/samba.entities === --- trunk/DTD/samba.entities2009-12-15 23:28:55 UTC (rev 1349) +++ trunk/DTD/samba.entities2009-12-23 09:23:06 UTC (rev 1350) @@ -50,8 +50,8 @@ !ENTITY person.gd ' firstnameGuenther/firstnamesurnameDeschner/surname affiliation - orgnameSuSE/orgname - addressemailg...@suse.de/email/address + orgnameSamba Team/orgname + addressemailg...@samba.org/email/address /affiliation' !ENTITY author.gd 'authorperson.gd;/author' @@ -180,7 +180,7 @@ data, most of which is extremely cryptic./para paraNote that specifying this parameter here will -override the smbconfoption name=log level / parameter +override the smbconfoptionnamelog level/name/smbconfoption parameter in the smb.conf; file./para /listitem /varlistentry' @@ -207,14 +207,14 @@ data, most of which is extremely cryptic./para paraNote that specifying this parameter here will -override the smbconfoption name=log level / parameter +override the smbconfoptionnamelog level/name/smbconfoption parameter in the smb.conf; file./para /listitem /varlistentry' !ENTITY stdarg.configfile ' varlistentry -term-s lt;configuration filegt;/term +term-s|--configfile lt;configuration filegt;/term listitemparaThe file specified contains the configuration details required by the server. The information in this file includes server-specific @@ -227,7 +227,7 @@ !ENTITY stdarg.version ' varlistentry -term-V/term +term-V|--version/term listitemparaPrints the program version number. /para/listitem /varlistentry' @@ -249,7 +249,7 @@ !ENTITY stdarg.resolve.order ' varlistentry -term-R lt;name resolve ordergt;/term +term-R|--name-resolve lt;name resolve ordergt;/term listitemparaThis option is used to determine what naming services and in what order to resolve host names to IP addresses. The option takes a space-separated @@ -297,20 +297,20 @@ paraIf this parameter is not set then the name resolve order defined in the smb.conf; file parameter -(smbconfoption name=name resolve order /) will be used. +(smbconfoptionnamename resolve order/name/smbconfoption) will be used. /para paraThe default order is lmhosts, host, wins, bcast. Without -this parameter or any entry in the smbconfoption name=name resolve order / parameter of the smb.conf; file, the name +this parameter or any entry in the smbconfoptionnamename resolve order/name/smbconfoption parameter of the smb.conf; file, the name resolution methods will be attempted in this order. /para/listitem /varlistentry' !ENTITY stdarg.netbios.name ' varlistentry -term-n lt;primary NetBIOS namegt;/term +term-n|--netbiosname lt;primary NetBIOS namegt;/term listitemparaThis option allows you to override the NetBIOS name that Samba uses for itself. This is identical -to setting the smbconfoption name=netbios name/ parameter in the smb.conf; file. +to setting the smbconfoptionnamenetbios name/name/smbconfoption parameter in the smb.conf; file. However, a command line setting will take precedence over settings in smb.conf;./para/listitem @@ -318,7 +318,7 @@ !ENTITY stdarg.scope ' varlistentry -term-i lt;scopegt;/term +term-i|--scope lt;scopegt;/term listitemparaThis specifies a NetBIOS scope that commandnmblookup/command will use to communicate with when generating NetBIOS names. For details on the use of NetBIOS @@ -340,7 +340,7 @@ !ENTITY stdarg.socket.options ' varlistentry -term-O socket options/term +term-O|--socket-options socket options/term listitemparaTCP socket options to set on the client socket. See the socket options parameter in the smb.conf; manual page for the list of valid @@ -357,7 +357,7 @@ !ENTITY stdarg.nopass ' varlistentry -term-N/term +term-N|--no-pass/term listitemparaIf specified, this parameter suppresses the normal password prompt from the client to the user. This is useful when accessing a service that does not require a password. /para @@ -420,7 +420,7 @@ !ENTITY stdarg.kerberos ' varlistentry -term-k/term +term-k|--kerberos/term listitempara Try to authenticate with kerberos. Only useful in an Active Directory environment.
svn commit: samba-web r1288 - in trunk/news: .
Author: gd Date: 2009-04-06 12:03:02 + (Mon, 06 Apr 2009) New Revision: 1288 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=samba-webrev=1288 Log: Adding myself to news/samba_and_guis.html. Guenther Modified: trunk/news/samba_and_guis.html Changeset: Modified: trunk/news/samba_and_guis.html === --- trunk/news/samba_and_guis.html 2009-04-06 11:52:34 UTC (rev 1287) +++ trunk/news/samba_and_guis.html 2009-04-06 12:03:02 UTC (rev 1288) @@ -63,7 +63,7 @@ everyone and is developed as a community of equals./p pVolker Lendecke, Jeremy Allison, Jim McDonough, Lars Muuml;ller, - and Michael Adambr + Michael Adam and Guuml;nther Deschnerbr Samba Team/p !--#include virtual=/samba/footer.html --
svn commit: samba-web r1202 - in trunk: .
Author: gd Date: 2008-07-01 17:56:56 + (Tue, 01 Jul 2008) New Revision: 1202 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=samba-webrev=1202 Log: Fix version mismatch. Guenther Modified: trunk/index.html Changeset: Modified: trunk/index.html === --- trunk/index.html2008-07-01 15:53:22 UTC (rev 1201) +++ trunk/index.html2008-07-01 17:56:56 UTC (rev 1202) @@ -31,7 +31,7 @@ pThe uncompressed tarballs and patch files have been signed using GnuPG (ID 6568B7EA). The source code can be a href=/samba/ftp/stable/samba-3.2.0.tar.gzdownloaded -now/a. See a href=/samba/history/samba-3.0.2.htmlthe +now/a. See a href=/samba/history/samba-3.2.0.htmlthe release notes for more info/a./p h45 June 2008/h4
svn commit: samba r26698 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3: .
Author: gd Date: 2008-01-09 10:56:07 + (Wed, 09 Jan 2008) New Revision: 26698 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26698 Log: Prettify samba3 client code a little more. Guenther Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm Changeset: Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm === --- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2008-01-09 05:36:02 UTC (rev 26697) +++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2008-01-09 10:56:07 UTC (rev 26698) @@ -2,6 +2,7 @@ # Samba3 client generator for IDL structures # on top of Samba4 style NDR functions # Copyright [EMAIL PROTECTED] 2005-2006 +# Copyright [EMAIL PROTECTED] 2008 # released under the GNU GPL package Parse::Pidl::Samba3::ClientNDR; @@ -27,6 +28,15 @@ sub pidl_hdr($$) { my ($self, $txt) = @_; $self-{res_hdr} .= $txt\n; } sub fn_declare($$) { my ($self,$n) = @_; $self-pidl($n); $self-pidl_hdr($n;); } +sub genpad($) +{ + my ($s) = @_; + my $nt = int((length($s)+1)/8); + my $lt = ($nt*8)-1; + my $ns = (length($s)-$lt); + return \tx($nt). x($ns); +} + sub new($) { my ($class) = shift; @@ -38,20 +48,23 @@ { my ($self, $if, $fn) = @_; - my $inargs = ; - my $defargs = ; + my $fn_args = ; my $uif = uc($if); my $ufn = NDR_.uc($fn-{NAME}); + my $fn_str = NTSTATUS rpccli_$fn-{NAME}; + my $pad = genpad($fn_str); + $fn_args .= struct rpc_pipe_client *cli,\n . $pad . TALLOC_CTX *mem_ctx; + foreach (@{$fn-{ELEMENTS}}) { - $defargs .= , . DeclLong($_); + $fn_args .= ,\n . $pad . DeclLong($_); } if (defined($fn-{RETURN_TYPE}) ($fn-{RETURN_TYPE} eq WERROR)) { - $defargs .= , WERROR *werror; + $fn_args .= ,\n . $pad . WERROR *werror; } - $self-fn_declare(NTSTATUS rpccli_$fn-{NAME}(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx$defargs)); + $self-fn_declare($fn_str($fn_args)); $self-pidl({); $self-indent; $self-pidl(struct $fn-{NAME} r;); @@ -62,7 +75,7 @@ foreach (@{$fn-{ELEMENTS}}) { if (grep(/in/, @{$_-{DIRECTION}})) { $self-pidl(r.in.$_-{NAME} = $_-{NAME};); - } + } } $self-pidl(); @@ -72,7 +85,12 @@ $self-deindent; $self-pidl(}); $self-pidl(); - $self-pidl(status = cli_do_rpc_ndr(cli, mem_ctx, PI_$uif, ndr_table_$if, $ufn, r);); + $self-pidl(status = cli_do_rpc_ndr(cli,); + $self-pidl(\t\t\tmem_ctx,); + $self-pidl(\t\t\tPI_$uif,); + $self-pidl(\t\t\tndr_table_$if,); + $self-pidl(\t\t\t$ufn,); + $self-pidl(\t\t\tr);); $self-pidl(); $self-pidl(if (!NT_STATUS_IS_OK(status)) {);
svn commit: samba r26699 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3: .
Author: gd Date: 2008-01-09 11:28:53 + (Wed, 09 Jan 2008) New Revision: 26699 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26699 Log: Some minor cosmetics for pidl samba3 server code. Guenther Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm Changeset: Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm === --- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm 2008-01-09 10:56:07 UTC (rev 26698) +++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm 2008-01-09 11:28:53 UTC (rev 26699) @@ -22,11 +22,11 @@ my $tabs = ; sub indent() { $tabs.=\t; } sub deindent() { $tabs = substr($tabs, 1); } -sub pidl($) { $res .= $tabs.(shift).\n; } +sub pidl($) { my ($txt) = @_; $res .= $txt?$tabs.(shift).\n:\n; } sub pidl_hdr($) { $res_hdr .= (shift).\n; } sub fn_declare($) { my ($n) = @_; pidl $n; pidl_hdr $n;; } -sub DeclLevel($$) +sub DeclLevel($$) { my ($e, $l) = @_; my $res = ; @@ -73,7 +73,7 @@ pidl if ($name == NULL) {; pidl \ttalloc_free($mem_ctx);; - pidl \treturn False;; + pidl \treturn false;; pidl }; pidl ; } @@ -98,29 +98,30 @@ pidl ; pidl r = talloc(NULL, struct $fn-{NAME});; pidl if (r == NULL) {; - pidl \treturn False;; + pidl \treturn false;; pidl }; pidl ; pidl if (!prs_data_blob(p-in_data.data, blob, r)) {; pidl \ttalloc_free(r);; - pidl \treturn False;; + pidl \treturn false;; pidl }; pidl ; pidl pull = ndr_pull_init_blob(blob, r);; pidl if (pull == NULL) {; pidl \ttalloc_free(r);; - pidl \treturn False;; + pidl \treturn false;; pidl }; pidl ; pidl pull-flags |= LIBNDR_FLAG_REF_ALLOC;; pidl ndr_err = call-ndr_pull(pull, NDR_IN, r);; pidl if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {; pidl \ttalloc_free(r);; - pidl \treturn False;; + pidl \treturn false;; pidl }; pidl ; - pidl if (DEBUGLEVEL = 10); + pidl if (DEBUGLEVEL = 10) {; pidl \tNDR_PRINT_IN_DEBUG($fn-{NAME}, r);; + pidl }; pidl ; my $env = GenerateFunctionOutEnv($fn); @@ -137,7 +138,7 @@ my @dir = @{$_-{DIRECTION}}; if (grep(/in/, @dir) and grep(/out/, @dir)) { pidl r-out.$_-{NAME} = r-in.$_-{NAME};; - } elsif (grep(/out/, @dir) and not + } elsif (grep(/out/, @dir) and not has_property($_, represent_as)) { AllocOutVar($_, r, r-out.$_-{NAME}, $env); } @@ -158,34 +159,35 @@ pidl ; pidl if (p-rng_fault_state) {; pidl \ttalloc_free(r);; - pidl \t/* Return True here, srv_pipe_hnd.c will take care */; - pidl \treturn True;; + pidl \t/* Return true here, srv_pipe_hnd.c will take care */; + pidl \treturn true;; pidl }; pidl ; - pidl if (DEBUGLEVEL = 10); + pidl if (DEBUGLEVEL = 10) {; pidl \tNDR_PRINT_OUT_DEBUG($fn-{NAME}, r);; + pidl }; pidl ; pidl push = ndr_push_init_ctx(r);; pidl if (push == NULL) {; pidl \ttalloc_free(r);; - pidl \treturn False;; + pidl \treturn false;; pidl }; pidl ; pidl ndr_err = call-ndr_push(push, NDR_OUT, r);; pidl if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {; pidl \ttalloc_free(r);; - pidl \treturn False;; + pidl \treturn false;; pidl }; pidl ; pidl blob = ndr_push_blob(push);; - pidl if (!prs_copy_data_in(p-out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {; + pidl if (!prs_copy_data_in(p-out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {; pidl \ttalloc_free(r);; - pidl \treturn False;; + pidl \treturn false;; pidl }; pidl ; pidl talloc_free(r);; pidl ; - pidl return True;; + pidl return true;; deindent; pidl }; pidl ; @@ -251,7 +253,7 @@ pidl #include \$header\; pidl_hdr #include \$ndr_header\; pidl ; - + foreach (@$ndr) { ParseInterface($_) if ($_-{TYPE} eq INTERFACE); }
svn commit: samba r26695 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3: .
Author: gd Date: 2008-01-08 17:02:53 + (Tue, 08 Jan 2008) New Revision: 26695 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26695 Log: Cosmetic fix for pidl generated samba3 client code. Guenther Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm Changeset: Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm === --- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2008-01-08 14:27:40 UTC (rev 26694) +++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2008-01-08 17:02:53 UTC (rev 26695) @@ -23,7 +23,7 @@ sub indent($) { my ($self) = @_; $self-{tabs}.=\t; } sub deindent($) { my ($self) = @_; $self-{tabs} = substr($self-{tabs}, 1); } -sub pidl($$) { my ($self,$txt) = @_; $self-{res} .= $self-{tabs}$txt\n; } +sub pidl($$) { my ($self,$txt) = @_; $self-{res} .= $txt ? $self-{tabs}$txt\n : \n; } sub pidl_hdr($$) { my ($self, $txt) = @_; $self-{res_hdr} .= $txt\n; } sub fn_declare($$) { my ($self,$n) = @_; $self-pidl($n); $self-pidl_hdr($n;); }
svn commit: samba r26696 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3: .
Author: gd Date: 2008-01-08 22:56:44 + (Tue, 08 Jan 2008) New Revision: 26696 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26696 Log: Some more minor pidl samba3 client cosmetics. Guenther Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm Changeset: Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm === --- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2008-01-08 17:02:53 UTC (rev 26695) +++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2008-01-08 22:56:44 UTC (rev 26696) @@ -66,8 +66,11 @@ } $self-pidl(); - $self-pidl(if (DEBUGLEVEL = 10)); - $self-pidl(\tNDR_PRINT_IN_DEBUG($fn-{NAME}, r);); + $self-pidl(if (DEBUGLEVEL = 10) {); + $self-indent; + $self-pidl(NDR_PRINT_IN_DEBUG($fn-{NAME}, r);); + $self-deindent; + $self-pidl(}); $self-pidl(); $self-pidl(status = cli_do_rpc_ndr(cli, mem_ctx, PI_$uif, ndr_table_$if, $ufn, r);); $self-pidl(); @@ -79,11 +82,16 @@ $self-pidl(}); $self-pidl(); - $self-pidl(if (DEBUGLEVEL = 10)); - $self-pidl(\tNDR_PRINT_OUT_DEBUG($fn-{NAME}, r);); + $self-pidl(if (DEBUGLEVEL = 10) {); + $self-indent; + $self-pidl(NDR_PRINT_OUT_DEBUG($fn-{NAME}, r);); + $self-deindent; + $self-pidl(}); $self-pidl(); $self-pidl(if (NT_STATUS_IS_ERR(status)) {); - $self-pidl(\treturn status;); + $self-indent; + $self-pidl(return status;); + $self-deindent; $self-pidl(}); $self-pidl(); $self-pidl(/* Return variables */);
svn commit: samba r26558 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/netlogon
Author: gd Date: 2007-12-21 23:52:14 + (Fri, 21 Dec 2007) New Revision: 26558 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26558 Log: Add IDL for netr_GetForestTrustInformation(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl === --- branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-12-21 22:55:02 UTC (rev 26557) +++ branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-12-21 23:52:14 UTC (rev 26558) @@ -1294,7 +1294,14 @@ // /* Function 0x2c */ - WERROR netr_NETRGETFORESTTRUSTINFORMATION(); + WERROR netr_GetForestTrustInformation( + [in] [string,charset(UTF16)] uint16 *server_name, + [in,ref] [string,charset(UTF16)] uint16 *trusted_domain_name, + [in,ref] netr_Authenticator *credential, + [out,ref] netr_Authenticator *return_authenticator, + [in] uint32 flags, + [out,ref] lsa_ForestTrustInformation **forest_trust_info + ); // /* Function 0x2d */ Modified: branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c === --- branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c 2007-12-21 22:55:02 UTC (rev 26557) +++ branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c 2007-12-21 23:52:14 UTC (rev 26558) @@ -1237,11 +1237,11 @@ } -/* - netr_NETRGETFORESTTRUSTINFORMATION +/* + netr_GetForestTrustInformation */ -static WERROR dcesrv_netr_NETRGETFORESTTRUSTINFORMATION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct netr_NETRGETFORESTTRUSTINFORMATION *r) +static WERROR dcesrv_netr_GetForestTrustInformation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct netr_GetForestTrustInformation *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); }
svn commit: samba r26393 - in branches/SAMBA_4_0/source/auth: .
Author: gd Date: 2007-12-11 10:18:10 + (Tue, 11 Dec 2007) New Revision: 26393 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26393 Log: Fix inline comment. Guenther Modified: branches/SAMBA_4_0/source/auth/auth_sam_reply.c Changeset: Modified: branches/SAMBA_4_0/source/auth/auth_sam_reply.c === --- branches/SAMBA_4_0/source/auth/auth_sam_reply.c 2007-12-11 09:14:39 UTC (rev 26392) +++ branches/SAMBA_4_0/source/auth/auth_sam_reply.c 2007-12-11 10:18:10 UTC (rev 26393) @@ -81,9 +81,7 @@ } } - sam-user_flags = 0; /* TODO: w2k3 uses 0x120. We know 0x20 - * as extra sids (PAC doc) but what is - * 0x100? */ + sam-user_flags = 0; /* w2k3 uses NETLOGON_EXTRA_SIDS | NETLOGON_NTLMV2_ENABLED */ sam-acct_flags = server_info-acct_flags; sam-logon_server.string = server_info-logon_server; sam-domain.string = server_info-domain_name;
svn commit: samba r26332 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-12-07 11:45:17 + (Fri, 07 Dec 2007) New Revision: 26332 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26332 Log: Add samr_ValidationStatus error mapping to samr_ValidatePassword(). Torture test to follow. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/samr.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/samr.idl === --- branches/SAMBA_4_0/source/librpc/idl/samr.idl 2007-12-07 11:36:32 UTC (rev 26331) +++ branches/SAMBA_4_0/source/librpc/idl/samr.idl 2007-12-07 11:45:17 UTC (rev 26332) @@ -1324,6 +1324,26 @@ NetValidatePasswordReset = 3 } samr_ValidatePasswordLevel; + /* NetApi maps samr_ValidationStatus errors to WERRORs. Haven't +* identified the mapping of +* - NERR_PasswordFilterError +* - NERR_PasswordExpired and +* - NERR_PasswordCantChange +* yet - Guenther +*/ + + typedef enum { + SAMR_VALIDATION_STATUS_SUCCESS = 0, + SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE = 1, + SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT = 2, + SAMR_VALIDATION_STATUS_BAD_PASSWORD = 4, + SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT = 5, + SAMR_VALIDATION_STATUS_PWD_TOO_SHORT = 6, + SAMR_VALIDATION_STATUS_PWD_TOO_LONG = 7, + SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH = 8, + SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT = 9 + } samr_ValidationStatus; + typedef struct { uint32 length; [size_is(length)] uint8 *data; @@ -1341,7 +1361,7 @@ typedef struct { samr_ValidatePasswordInfo info; - uint16 status; + samr_ValidationStatus status; } samr_ValidatePasswordRepCtr; typedef [switch_type(uint16)] union {
svn commit: samba r26331 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-12-07 11:36:32 + (Fri, 07 Dec 2007) New Revision: 26331 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26331 Log: Add IDL for samr_ValidatePassword(). A very interesting call. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/samr.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/samr.idl === --- branches/SAMBA_4_0/source/librpc/idl/samr.idl 2007-12-07 03:18:12 UTC (rev 26330) +++ branches/SAMBA_4_0/source/librpc/idl/samr.idl 2007-12-07 11:36:32 UTC (rev 26331) @@ -1308,9 +1308,79 @@ // /* Function0x43 */ - /* - I haven't been able to work out the format of this one yet. - Seems to start with a switch level for a union? - */ - NTSTATUS samr_ValidatePassword(); + // + typedef [bitmap32bit] bitmap { + SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET = 0x0001, + SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME = 0x0002, + SAMR_VALIDATE_FIELD_LOCKOUT_TIME= 0x0004, + SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT = 0x0008, + SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH = 0x0010, + SAMR_VALIDATE_FIELD_PASSWORD_HISTORY= 0x0020 + } samr_ValidateFieldsPresent; + + typedef enum { + NetValidateAuthentication = 1, + NetValidatePasswordChange= 2, + NetValidatePasswordReset = 3 + } samr_ValidatePasswordLevel; + + typedef struct { + uint32 length; + [size_is(length)] uint8 *data; +} samr_ValidationBlob; + + typedef struct { + samr_ValidateFieldsPresent fields_present; + NTTIME_hyper last_password_change; + NTTIME_hyper bad_password_time; + NTTIME_hyper lockout_time; + uint32 bad_pwd_count; + uint32 pwd_history_len; + [size_is(pwd_history_len)] samr_ValidationBlob *pwd_history; + } samr_ValidatePasswordInfo; + + typedef struct { + samr_ValidatePasswordInfo info; + uint16 status; + } samr_ValidatePasswordRepCtr; + + typedef [switch_type(uint16)] union { + [case(1)] samr_ValidatePasswordRepCtr ctr1; + [case(2)] samr_ValidatePasswordRepCtr ctr2; + [case(3)] samr_ValidatePasswordRepCtr ctr3; + } samr_ValidatePasswordRep; + + typedef struct { + samr_ValidatePasswordInfo info; + lsa_StringLarge password; + lsa_StringLarge account; + samr_ValidationBlob hash; + boolean8 pwd_must_change_at_next_logon; + boolean8 clear_lockout; + } samr_ValidatePasswordReq3; + + typedef struct { + samr_ValidatePasswordInfo info; + lsa_StringLarge password; + lsa_StringLarge account; + samr_ValidationBlob hash; + boolean8 password_matched; + } samr_ValidatePasswordReq2; + + typedef struct { + samr_ValidatePasswordInfo info; + boolean8 password_matched; + } samr_ValidatePasswordReq1; + + typedef [switch_type(uint16)] union { + [case(1)] samr_ValidatePasswordReq1 req1; + [case(2)] samr_ValidatePasswordReq2 req2; + [case(3)] samr_ValidatePasswordReq3 req3; + } samr_ValidatePasswordReq; + + NTSTATUS samr_ValidatePassword( + [in] samr_ValidatePasswordLevel level, + [in,switch_is(level)] samr_ValidatePasswordReq req, + [out,switch_is(level)] samr_ValidatePasswordRep *rep + ); }
svn commit: samba r26285 - in branches/SAMBA_4_0/source: . librpc/idl rpc_server/netlogon torture/rpc
Author: gd Date: 2007-12-04 09:41:28 + (Tue, 04 Dec 2007) New Revision: 26285 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26285 Log: Add IDL and torture test for netr_ServerPasswordGet(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c branches/SAMBA_4_0/source/samba4-knownfail branches/SAMBA_4_0/source/torture/rpc/netlogon.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl === --- branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-12-04 05:32:23 UTC (rev 26284) +++ branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-12-04 09:41:28 UTC (rev 26285) @@ -1112,7 +1112,15 @@ // /* Function 0x1f */ - WERROR netr_NETRSERVERPASSWORDGET(); + WERROR netr_ServerPasswordGet( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [string,charset(UTF16)] uint16 account_name[], + [in] netr_SchannelType secure_channel_type, + [in] [string,charset(UTF16)] uint16 computer_name[], + [in,ref] netr_Authenticator *credential, + [out,ref] netr_Authenticator *return_authenticator, + [out,ref] samr_Password *password + ); // /* Function 0x20 */ Modified: branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c === --- branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c 2007-12-04 05:32:23 UTC (rev 26284) +++ branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c 2007-12-04 09:41:28 UTC (rev 26285) @@ -946,11 +946,11 @@ -/* - netr_NETRSERVERPASSWORDGET +/* + netr_ServerPasswordGet */ -static WERROR dcesrv_netr_NETRSERVERPASSWORDGET(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct netr_NETRSERVERPASSWORDGET *r) +static WERROR dcesrv_netr_ServerPasswordGet(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct netr_ServerPasswordGet *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/samba4-knownfail === --- branches/SAMBA_4_0/source/samba4-knownfail 2007-12-04 05:32:23 UTC (rev 26284) +++ branches/SAMBA_4_0/source/samba4-knownfail 2007-12-04 09:41:28 UTC (rev 26285) @@ -29,5 +29,6 @@ RPC-NETLOGON.*/DsrGetDcSiteCoverageW RPC-NETLOGON.*/DsRAddressToSitenamesW RPC-NETLOGON.*/DsRAddressToSitenamesExW +RPC-NETLOGON.*/GetPassword BASE-CHARSET.*/Testing partial surrogate .*NET-API-DELSHARE.* # DelShare isn't implemented yet Modified: branches/SAMBA_4_0/source/torture/rpc/netlogon.c === --- branches/SAMBA_4_0/source/torture/rpc/netlogon.c2007-12-04 05:32:23 UTC (rev 26284) +++ branches/SAMBA_4_0/source/torture/rpc/netlogon.c2007-12-04 09:41:28 UTC (rev 26285) @@ -438,6 +438,36 @@ return true; } +static bool test_GetPassword(struct torture_context *tctx, +struct dcerpc_pipe *p, +struct cli_credentials *machine_credentials) +{ + struct netr_ServerPasswordGet r; + struct creds_CredentialState *creds; + struct netr_Authenticator credential; + NTSTATUS status; + struct netr_Authenticator return_authenticator; + struct samr_Password password; + + if (!test_SetupCredentials(p, tctx, machine_credentials, creds)) { + return false; + } + + creds_client_authenticator(creds, credential); + + r.in.server_name = talloc_asprintf(tctx, %s, dcerpc_server_name(p)); + r.in.account_name = talloc_asprintf(tctx, %s$, TEST_MACHINE_NAME); + r.in.secure_channel_type = SEC_CHAN_BDC; + r.in.computer_name = TEST_MACHINE_NAME; + r.in.credential = credential; + r.out.return_authenticator = return_authenticator; + r.out.password = password; + + status = dcerpc_netr_ServerPasswordGet(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, ServerPasswordGet); + + return true; +} /* try a netlogon SamLogon */
svn commit: samba r26256 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3: .
Author: gd Date: 2007-12-03 16:49:45 + (Mon, 03 Dec 2007) New Revision: 26256 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26256 Log: When generating Samba3 pidl output for WERROR based functions, make sure the client caller can retrieve the WERROR. Jelmer, no idea how to add a test for that... Guenther Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm Changeset: Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm === --- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2007-12-03 16:46:45 UTC (rev 26255) +++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2007-12-03 16:49:45 UTC (rev 26256) @@ -46,6 +46,11 @@ foreach (@{$fn-{ELEMENTS}}) { $defargs .= , . DeclLong($_); } + + if ($fn-{RETURN_TYPE} eq WERROR) { + $defargs .= , WERROR *werror; + } + $self-fn_declare(NTSTATUS rpccli_$fn-{NAME}(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx$defargs)); $self-pidl({); $self-indent; @@ -123,6 +128,12 @@ } elsif ($fn-{RETURN_TYPE} eq NTSTATUS) { $self-pidl(return r.out.result;); } elsif ($fn-{RETURN_TYPE} eq WERROR) { + $self-pidl(if (werror) {); + $self-indent; + $self-pidl(*werror = r.out.result;); + $self-deindent; + $self-pidl(}); + $self-pidl(); $self-pidl(return werror_to_ntstatus(r.out.result);); } else { warning($fn-{ORIGINAL}, Unable to convert $fn-{RETURN_TYPE} to NTSTATUS);
svn commit: samba r26257 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3: .
Author: gd Date: 2007-12-03 17:00:10 + (Mon, 03 Dec 2007) New Revision: 26257 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26257 Log: Get rid of uninitialized value warning in the samba3 pidl generator. Jelmer, please check. Guenther Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm Changeset: Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm === --- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2007-12-03 16:49:45 UTC (rev 26256) +++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm 2007-12-03 17:00:10 UTC (rev 26257) @@ -47,7 +47,7 @@ $defargs .= , . DeclLong($_); } - if ($fn-{RETURN_TYPE} eq WERROR) { + if (defined($fn-{RETURN_TYPE}) ($fn-{RETURN_TYPE} eq WERROR)) { $defargs .= , WERROR *werror; }
svn commit: samba r26273 - in branches/SAMBA_4_0/source: . librpc/idl rpc_server/netlogon torture/rpc
Author: gd Date: 2007-12-03 23:38:54 + (Mon, 03 Dec 2007) New Revision: 26273 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26273 Log: Add IDL and torture test for netr_NetrEnumerateTurstedDomains() and netr_NetrEnumerateTurstedDomainsEx(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c branches/SAMBA_4_0/source/samba4-knownfail branches/SAMBA_4_0/source/torture/rpc/netlogon.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl === --- branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-12-03 23:33:22 UTC (rev 26272) +++ branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-12-03 23:38:54 UTC (rev 26273) @@ -903,8 +903,16 @@ /*/ /* Function 0x13 */ - WERROR netr_NETRENUMERATETRUSTEDDOMAINS() ; + typedef struct { + uint32 length; + [size_is(length)] uint8 *data; + } netr_Blob; + WERROR netr_NetrEnumerateTrustedDomains( + [in] [string,charset(UTF16)] uint16 *server_name, + [out,ref] netr_Blob *trusted_domains_blob + ); + /*/ /* Function 0x14 */ @@ -1027,11 +1035,6 @@ // /* Function 0x1d */ - typedef struct { - uint32 length; - [size_is(length)] uint8 *data; - } netr_Blob; - typedef [flag(NDR_PAHEX)] struct { uint16 length; uint16 size; @@ -1153,8 +1156,53 @@ // /* Function 0x24 */ - WERROR netr_NETRENUMERATETRUSTEDDOMAINSEX(); + typedef [bitmap32bit] bitmap { + NETR_TRUST_FLAG_IN_FOREST = 0x0001, + NETR_TRUST_FLAG_OUTBOUND = 0x0002, + NETR_TRUST_FLAG_TREEROOT = 0x0004, + NETR_TRUST_FLAG_PRIMARY = 0x0008, + NETR_TRUST_FLAG_NATIVE= 0x0010, + NETR_TRUST_FLAG_INBOUND = 0x0020 + } netr_TrustFlags; + typedef [v1_enum] enum { + NETR_TRUST_TYPE_DOWNLEVEL = 1, + NETR_TRUST_TYPE_UPLEVEL = 2, + NETR_TRUST_TYPE_MIT = 3, + NETR_TRUST_TYPE_DCE = 4 + } netr_TrustType; + + typedef [bitmap32bit] bitmap { + NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE = 0x0001, + NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY = 0x0002, + NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN = 0x0004, + NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE = 0x0008, + NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION = 0x0010, + NETR_TRUST_ATTRIBUTE_WITHIN_FOREST = 0x0020, + NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL = 0x0040 + } netr_TrustAttributes; + + typedef struct { + [string,charset(UTF16)] uint16 *netbios_name; + [string,charset(UTF16)] uint16 *dns_name; + netr_TrustFlags trust_flags; + uint32 parent_index; + netr_TrustType trust_type; + netr_TrustAttributestrust_attributes; + dom_sid2*sid; + GUIDguid; + } netr_DomainTrust; + +typedef struct { +uint32 count; +[size_is(count)] netr_DomainTrust *array; +} netr_DomainTrustList; + + WERROR netr_NetrEnumerateTrustedDomainsEx( + [in] [string,charset(UTF16)] uint16 *server_name, + [out,ref] netr_DomainTrustList *dom_trust_list + ); + // /* Function 0x25 */ typedef struct { @@ -1199,43 +1247,6 @@ // /* Function 0x28 */ - typedef [bitmap32bit] bitmap { - NETR_TRUST_FLAG_IN_FOREST = 0x0001, - NETR_TRUST_FLAG_OUTBOUND = 0x0002, - NETR_TRUST_FLAG_TREEROOT = 0x0004, - NETR_TRUST_FLAG_PRIMARY = 0x0008, - NETR_TRUST_FLAG_NATIVE= 0x0010, - NETR_TRUST_FLAG_INBOUND = 0x0020 - } netr_TrustFlags; - - typedef [v1_enum] enum { - NETR_TRUST_TYPE_DOWNLEVEL = 1, - NETR_TRUST_TYPE_UPLEVEL = 2, - NETR_TRUST_TYPE_MIT = 3, - NETR_TRUST_TYPE_DCE = 4 - } netr_TrustType; - - typedef [bitmap32bit] bitmap { - NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE = 0x0001, - NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY = 0x0002, - NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN = 0x0004
svn commit: samba r26216 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-30 09:55:15 + (Fri, 30 Nov 2007) New Revision: 26216 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26216 Log: Add very basic torture test for wkssvc_NetrUnjoinDomain2(). Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-30 09:53:20 UTC (rev 26215) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-30 09:55:15 UTC (rev 26216) @@ -1290,6 +1290,93 @@ return true; } +static bool test_NetrUnjoinDomain2(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrUnjoinDomain2 r; + const char *domain_admin_account = NULL; + const char *domain_admin_password = NULL; + struct wkssvc_PasswordBuffer pwd_buf; + enum wkssvc_NetJoinStatus join_status; + const char *join_name = NULL; + WERROR expected_err; + + /* FIXME: this test assumes to join workstations / servers and does not +* handle DCs (WERR_SETUP_DOMAIN_CONTROLLER) */ + + if (!test_GetJoinInformation(tctx, p, join_status, join_name)) + { + return false; + } + + switch (join_status) { + case NetSetupUnjoined: + expected_err = WERR_SETUP_NOT_JOINED; + break; + case NetSetupDomainName: + case NetSetupUnknownStatus: + case NetSetupWorkgroupName: + default: + expected_err = WERR_OK; + break; + } + + domain_admin_account = lp_parm_string(global_loadparm, NULL, + torture, + domain_admin_account); + + domain_admin_password = lp_parm_string(global_loadparm, NULL, + torture, + domain_admin_password); + + if ((domain_admin_account == NULL) || + (domain_admin_password == NULL)) { + torture_comment(tctx, not enough input parameter\n); + return false; + } + + if (!encode_wkssvc_join_password_buffer(tctx, p, + domain_admin_password, + pwd_buf)) + { + return false; + } + + r.in.server_name = dcerpc_server_name(p); + r.in.account = domain_admin_account; + r.in.encrypted_password = pwd_buf; + r.in.unjoin_flags = 0; + + torture_comment(tctx, testing NetrUnjoinDomain2 (assuming non-DC)\n); + + status = dcerpc_wkssvc_NetrUnjoinDomain2(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrUnjoinDomain2 failed); + torture_assert_werr_equal(tctx, r.out.result, expected_err, + NetrUnjoinDomain2 failed); + + if (!test_GetJoinInformation(tctx, p, join_status, join_name)) + { + return false; + } + + switch (join_status) { + case NetSetupUnjoined: + case NetSetupWorkgroupName: + break; + case NetSetupUnknown: + case NetSetupDomainName: + default: + torture_comment(tctx, + Unjoin verify failed: got %d\n, join_status); + return false; + } + + return true; +} + + struct torture_suite *torture_rpc_wkssvc(TALLOC_CTX *mem_ctx) { struct torture_suite *suite; @@ -1351,6 +1438,9 @@ test = torture_rpc_tcase_add_test(tcase, NetrJoinDomain2, test_NetrJoinDomain2); test-dangerous = true; + test = torture_rpc_tcase_add_test(tcase, NetrUnjoinDomain2, + test_NetrUnjoinDomain2); + test-dangerous = true; torture_rpc_tcase_add_test(tcase, NetrJoinDomain, test_NetrJoinDomain);
svn commit: samba r26215 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-30 09:53:20 + (Fri, 30 Nov 2007) New Revision: 26215 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26215 Log: Verify that test_NetrJoinDomain2() has suceeded. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-30 09:49:20 UTC (rev 26214) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-30 09:53:20 UTC (rev 26215) @@ -1275,6 +1275,18 @@ NetrJoinDomain2 failed); torture_assert_werr_equal(tctx, r.out.result, expected_err, NetrJoinDomain2 failed); + + if (!test_GetJoinInformation(tctx, p, join_status, join_name)) + { + return false; + } + + if (join_status != NetSetupDomainName) { + torture_comment(tctx, + Join verify failed: got %d\n, join_status); + return false; + } + return true; }
svn commit: samba r26214 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-30 09:49:20 + (Fri, 30 Nov 2007) New Revision: 26214 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26214 Log: Add note about remotely joining an unjoined XP SP2 workstation. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 23:31:12 UTC (rev 26213) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-30 09:49:20 UTC (rev 26214) @@ -1192,6 +1192,15 @@ return true; } +/* + * prerequisites for remotely joining an unjoined XP SP2 workstation: + * - firewall needs to be disabled (or open for ncacn_np access) + * - HKLM\System\CurrentControlSet\Control\Lsa\forceguest needs to 0 + * see also: + * http://support.microsoft.com/kb/294355/EN-US/ and + * http://support.microsoft.com/kb/290403/EN-US/ + */ + static bool test_NetrJoinDomain2(struct torture_context *tctx, struct dcerpc_pipe *p) {
svn commit: samba r26217 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-30 13:04:59 + (Fri, 30 Nov 2007) New Revision: 26217 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26217 Log: Let encode_wkssvc_join_password_buffer() take the session key as parameter. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-30 09:55:15 UTC (rev 26216) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-30 13:04:59 UTC (rev 26217) @@ -1155,32 +1155,25 @@ * buffer), calling MD5Update() first with session_key and then with confounder * (vice versa in samr) - Guenther */ -static bool encode_wkssvc_join_password_buffer(struct torture_context *tctx, - struct dcerpc_pipe *p, +static void encode_wkssvc_join_password_buffer(TALLOC_CTX *mem_ctx, const char *pwd, + DATA_BLOB *session_key, struct wkssvc_PasswordBuffer *pwd_buf) { - NTSTATUS status; uint8_t buffer[516]; struct MD5Context ctx; - DATA_BLOB confounded_session_key = data_blob_talloc(tctx, NULL, 16); - DATA_BLOB session_key; + DATA_BLOB confounded_session_key = data_blob_talloc(mem_ctx, NULL, 16); int confounder_len = 8; uint8_t confounder[8]; encode_pw_buffer(buffer, pwd, STR_UNICODE); - status = dcerpc_fetch_session_key(p, session_key); - if (!NT_STATUS_IS_OK(status)) { - return false; - } - generate_random_buffer((uint8_t *)confounder, confounder_len); MD5Init(ctx); - MD5Update(ctx, session_key.data, session_key.length); + MD5Update(ctx, session_key-data, session_key-length); MD5Update(ctx, confounder, confounder_len); MD5Final(confounded_session_key.data, ctx); @@ -1189,7 +1182,7 @@ memcpy(pwd_buf-data[0], confounder, confounder_len); memcpy(pwd_buf-data[8], buffer, 516); - return true; + data_blob_free(confounded_session_key); } /* @@ -1213,6 +1206,7 @@ enum wkssvc_NetJoinStatus join_status; const char *join_name = NULL; WERROR expected_err; + DATA_BLOB session_key; /* FIXME: this test assumes to join workstations / servers and does not * handle DCs (WERR_SETUP_DOMAIN_CONTROLLER) */ @@ -1253,13 +1247,14 @@ return false; } - if (!encode_wkssvc_join_password_buffer(tctx, p, - domain_admin_password, - pwd_buf)) - { + status = dcerpc_fetch_session_key(p, session_key); + if (!NT_STATUS_IS_OK(status)) { return false; } + encode_wkssvc_join_password_buffer(tctx, domain_admin_password, + session_key, pwd_buf); + r.in.server_name = dcerpc_server_name(p); r.in.domain_name = domain_name; r.in.account_ou = NULL; @@ -1301,6 +1296,7 @@ enum wkssvc_NetJoinStatus join_status; const char *join_name = NULL; WERROR expected_err; + DATA_BLOB session_key; /* FIXME: this test assumes to join workstations / servers and does not * handle DCs (WERR_SETUP_DOMAIN_CONTROLLER) */ @@ -1336,13 +1332,14 @@ return false; } - if (!encode_wkssvc_join_password_buffer(tctx, p, - domain_admin_password, - pwd_buf)) - { + status = dcerpc_fetch_session_key(p, session_key); + if (!NT_STATUS_IS_OK(status)) { return false; } + encode_wkssvc_join_password_buffer(tctx, domain_admin_password, + session_key, pwd_buf); + r.in.server_name = dcerpc_server_name(p); r.in.account = domain_admin_account; r.in.encrypted_password = pwd_buf;
svn commit: samba r26208 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-29 21:52:20 + (Thu, 29 Nov 2007) New Revision: 26208 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26208 Log: Add torture test for (unsupported) wkssvc_NetrJoinDomain() and wkssvc_NetrUnjoinDomain(). Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 17:49:13 UTC (rev 26207) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 21:52:20 UTC (rev 26208) @@ -1055,6 +1055,67 @@ return true; } + +static bool test_NetrUnjoinDomain(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrUnjoinDomain r; + struct cli_credentials *creds = cmdline_credentials; + const char *user = cli_credentials_get_username(creds); + const char *admin_account = NULL; + + admin_account = talloc_asprintf(tctx, %s\\%s, + lp_workgroup(global_loadparm), + user); + + r.in.server_name = dcerpc_server_name(p); + r.in.Account = admin_account; + r.in.password = NULL; + r.in.unjoin_flags = 0; + + torture_comment(tctx, testing NetrUnjoinDomain\n); + + status = dcerpc_wkssvc_NetrUnjoinDomain(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrUnjoinDomain failed); + torture_assert_werr_equal(tctx, r.out.result, WERR_NOT_SUPPORTED, + NetrUnjoinDomain failed); + return true; +} + + +static bool test_NetrJoinDomain(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrJoinDomain r; + struct cli_credentials *creds = cmdline_credentials; + const char *user = cli_credentials_get_username(creds); + const char *admin_account = NULL; + + admin_account = talloc_asprintf(tctx, %s\\%s, + lp_workgroup(global_loadparm), + user); + + r.in.server_name = dcerpc_server_name(p); + r.in.domain_name = lp_realm(global_loadparm); + r.in.account_ou = NULL; + r.in.Account = admin_account; + r.in.password = NULL; + r.in.join_flags = 0; + + torture_comment(tctx, testing NetrJoinDomain\n); + + status = dcerpc_wkssvc_NetrJoinDomain(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrJoinDomain failed); + torture_assert_werr_equal(tctx, r.out.result, WERR_NOT_SUPPORTED, + NetrJoinDomain failed); + return true; +} + + struct torture_suite *torture_rpc_wkssvc(TALLOC_CTX *mem_ctx) { struct torture_suite *suite; @@ -1113,6 +1174,12 @@ torture_rpc_tcase_add_test(tcase, NetrEnumerateComputerNames, test_NetrEnumerateComputerNames); + torture_rpc_tcase_add_test(tcase, NetrJoinDomain, + test_NetrJoinDomain); + test-dangerous = true; + torture_rpc_tcase_add_test(tcase, NetrUnjoinDomain, + test_NetrUnjoinDomain); + test-dangerous = true; torture_rpc_tcase_add_test(tcase, NetrGetJoinInformation, test_NetrGetJoinInformation); torture_rpc_tcase_add_test(tcase, NetrGetJoinableOus,
svn commit: samba r26209 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-11-29 21:53:50 + (Thu, 29 Nov 2007) New Revision: 26209 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26209 Log: For consistency, rename one argument in NetrJoinDomain. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-29 21:52:20 UTC (rev 26208) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-29 21:53:50 UTC (rev 26209) @@ -578,7 +578,7 @@ [in,ref] [string,charset(UTF16)] uint16 *domain_name, [in] [string,charset(UTF16)] uint16 *account_ou, [in] [string,charset(UTF16)] uint16 *Account, - [in] [string,charset(UTF16)] uint16 *unknown, + [in] [string,charset(UTF16)] uint16 *password, [in] wkssvc_joinflags join_flags );
svn commit: samba r26210 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-29 22:22:19 + (Thu, 29 Nov 2007) New Revision: 26210 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26210 Log: w00t! Solved the nasty crypto problem of the 524 byte wkssvc_PasswordBuffer for wkssvc_JoinDomain()/wkssvc_UnjoinDomain(). Very soon we will be able to remotely join windows workstations into AD domains using smbtorture :-) Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 21:53:50 UTC (rev 26209) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 22:22:19 UTC (rev 26210) @@ -25,6 +25,8 @@ #include torture/rpc/rpc.h #include lib/cmdline/popt_common.h #include param/param.h +#include lib/crypto/crypto.h +#include libcli/auth/libcli_auth.h #define SMBTORTURE_MACHINE_NAME smbtrt_name #define SMBTORTURE_ALTERNATE_NAME smbtrt_altname @@ -1115,7 +1117,49 @@ return true; } +/* encode a wkssvc_PasswordBuffer for remote joining/unjoining: + * + * similar to samr_CryptPasswordEx. Different: 8byte confounder (instead of + * 16byte), confounder at the beginning of the 516 byte buffer (instead of at + * the end), MD5Update() reordering of session_key and confounder - Guenther */ +static bool encode_wkssvc_join_password_buffer(struct torture_context *tctx, + struct dcerpc_pipe *p, + const char *pwd, + struct wkssvc_PasswordBuffer *pwd_buf) +{ + NTSTATUS status; + uint8_t buffer[516]; + struct MD5Context ctx; + + DATA_BLOB confounded_session_key = data_blob_talloc(tctx, NULL, 16); + DATA_BLOB session_key; + + int confounder_len = 8; + uint8_t confounder[8]; + + encode_pw_buffer(buffer, pwd, STR_UNICODE); + + status = dcerpc_fetch_session_key(p, session_key); + if (!NT_STATUS_IS_OK(status)) { + return false; + } + + generate_random_buffer((uint8_t *)confounder, confounder_len); + + MD5Init(ctx); + MD5Update(ctx, session_key.data, session_key.length); + MD5Update(ctx, confounder, confounder_len); + MD5Final(confounded_session_key.data, ctx); + + arcfour_crypt_blob(buffer, 516, confounded_session_key); + + memcpy(pwd_buf-data[0], confounder, confounder_len); + memcpy(pwd_buf-data[8], buffer, 516); + + return true; +} + struct torture_suite *torture_rpc_wkssvc(TALLOC_CTX *mem_ctx) { struct torture_suite *suite;
svn commit: samba r26212 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-29 23:22:49 + (Thu, 29 Nov 2007) New Revision: 26212 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26212 Log: Make test_NetrJoinDomain2() a little more robust against missing parameters. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 23:09:37 UTC (rev 26211) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 23:22:49 UTC (rev 26212) @@ -1198,10 +1198,11 @@ struct wkssvc_NetrJoinDomain2 r; const char *domain_admin_account = NULL; const char *domain_admin_password = NULL; + const char *domain_name = NULL; struct wkssvc_PasswordBuffer pwd_buf; enum wkssvc_NetJoinStatus join_status; const char *join_name = NULL; - WERROR expected_err = WERR_OK; + WERROR expected_err; /* FIXME: this test assumes to join workstations / servers and does not * handle DCs (WERR_SETUP_DOMAIN_CONTROLLER) */ @@ -1218,6 +1219,8 @@ case NetSetupUnknownStatus: case NetSetupUnjoined: case NetSetupWorkgroupName: + default: + expected_err = WERR_OK; break; } @@ -1229,6 +1232,17 @@ torture, domain_admin_password); + domain_name = lp_parm_string(global_loadparm, NULL, +torture, +domain_name); + + if ((domain_admin_account == NULL) || + (domain_admin_password == NULL) || + (domain_name == NULL)) { + torture_comment(tctx, not enough input parameter\n); + return false; + } + if (!encode_wkssvc_join_password_buffer(tctx, p, domain_admin_password, pwd_buf)) @@ -1237,7 +1251,7 @@ } r.in.server_name = dcerpc_server_name(p); - r.in.domain_name = lp_realm(global_loadparm); + r.in.domain_name = domain_name; r.in.account_ou = NULL; r.in.admin_account = domain_admin_account; r.in.encrypted_password = pwd_buf;
svn commit: samba r26213 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-29 23:31:12 + (Thu, 29 Nov 2007) New Revision: 26213 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26213 Log: Trying to fix confusing inline comment about wkssvc_PasswordBuffer. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 23:22:49 UTC (rev 26212) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 23:31:12 UTC (rev 26213) @@ -1151,8 +1151,9 @@ /* encode a wkssvc_PasswordBuffer for remote joining/unjoining: * * similar to samr_CryptPasswordEx. Different: 8byte confounder (instead of - * 16byte), confounder at the beginning of the 516 byte buffer (instead of at - * the end), MD5Update() reordering of session_key and confounder - Guenther */ + * 16byte), confounder in front of the 516 byte buffer (instead of after that + * buffer), calling MD5Update() first with session_key and then with confounder + * (vice versa in samr) - Guenther */ static bool encode_wkssvc_join_password_buffer(struct torture_context *tctx, struct dcerpc_pipe *p,
svn commit: samba r26211 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc
Author: gd Date: 2007-11-29 23:09:37 + (Thu, 29 Nov 2007) New Revision: 26211 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26211 Log: Add very basic test_NetrJoinDomain2() test which can join xp workstations into an AD domain. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-29 22:22:19 UTC (rev 26210) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-29 23:09:37 UTC (rev 26211) @@ -689,7 +689,7 @@ WERROR wkssvc_NetrJoinDomain2 ( [in] [string,charset(UTF16)] uint16 *server_name, [in,ref] [string,charset(UTF16)] uint16 *domain_name, - [in] [string,charset(UTF16)] uint16 *account_name, + [in] [string,charset(UTF16)] uint16 *account_ou, [in] [string,charset(UTF16)] uint16 *admin_account, [in] wkssvc_PasswordBuffer *encrypted_password, [in] wkssvc_joinflags join_flags Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 22:22:19 UTC (rev 26210) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-29 23:09:37 UTC (rev 26211) @@ -1006,6 +1006,38 @@ return true; } +static bool test_GetJoinInformation(struct torture_context *tctx, + struct dcerpc_pipe *p, + enum wkssvc_NetJoinStatus *join_status_p, + const char **name) +{ + NTSTATUS status; + struct wkssvc_NetrGetJoinInformation r; + enum wkssvc_NetJoinStatus join_status; + const char *name_buffer = ; + + r.in.server_name = dcerpc_server_name(p); + r.in.name_buffer = r.out.name_buffer = name_buffer; + r.out.name_type = join_status; + + status = dcerpc_wkssvc_NetrGetJoinInformation(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrGetJoinInformation failed); + torture_assert_werr_ok(tctx, r.out.result, + NetrGetJoinInformation failed); + + if (join_status_p) { + *join_status_p = join_status; + } + + if (*name) { + *name = talloc_strdup(tctx, name_buffer); + } + + return true; + +} + static bool test_NetrGetJoinableOus(struct torture_context *tctx, struct dcerpc_pipe *p) { @@ -1086,7 +1118,6 @@ return true; } - static bool test_NetrJoinDomain(struct torture_context *tctx, struct dcerpc_pipe *p) { @@ -1160,6 +1191,69 @@ return true; } +static bool test_NetrJoinDomain2(struct torture_context *tctx, +struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrJoinDomain2 r; + const char *domain_admin_account = NULL; + const char *domain_admin_password = NULL; + struct wkssvc_PasswordBuffer pwd_buf; + enum wkssvc_NetJoinStatus join_status; + const char *join_name = NULL; + WERROR expected_err = WERR_OK; + + /* FIXME: this test assumes to join workstations / servers and does not +* handle DCs (WERR_SETUP_DOMAIN_CONTROLLER) */ + + if (!test_GetJoinInformation(tctx, p, join_status, join_name)) + { + return false; + } + + switch (join_status) { + case NetSetupDomainName: + expected_err = WERR_SETUP_ALREADY_JOINED; + break; + case NetSetupUnknownStatus: + case NetSetupUnjoined: + case NetSetupWorkgroupName: + break; + } + + domain_admin_account = lp_parm_string(global_loadparm, NULL, + torture, + domain_admin_account); + + domain_admin_password = lp_parm_string(global_loadparm, NULL, + torture, + domain_admin_password); + + if (!encode_wkssvc_join_password_buffer(tctx, p, + domain_admin_password, + pwd_buf)) + { + return false; + } + + r.in.server_name = dcerpc_server_name(p); + r.in.domain_name = lp_realm(global_loadparm); + r.in.account_ou = NULL; + r.in.admin_account = domain_admin_account; + r.in.encrypted_password = pwd_buf
svn commit: samba r26143 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc torture/rpc
Author: gd Date: 2007-11-27 09:41:50 + (Tue, 27 Nov 2007) New Revision: 26143 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26143 Log: Add IDL and torture test for wkssvc_NetrWkstaUserGetInfo. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 09:35:10 UTC (rev 26142) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 09:41:50 UTC (rev 26143) @@ -192,8 +192,23 @@ /*/ /* Function0x03 */ - WERROR WKSSVC_NETRWKSTAUSERGETINFO (); + typedef struct { + [string,charset(UTF16)] uint16 *other_domains; + } wkssvc_NetrWkstaUserInfo1101; + typedef [switch_type(uint32)] union { + [case(0)] wkssvc_NetrWkstaUserInfo0 *info0; + [case(1)] wkssvc_NetrWkstaUserInfo1 *info1; + [case(1101)] wkssvc_NetrWkstaUserInfo1101 *info1101; + } wkssvc_NetrWkstaUserInfo; + + WERROR wkssvc_NetrWkstaUserGetInfo( + [in] [string,charset(UTF16)] uint16 *unknown, + [in] uint32 level, + [out] [switch_is(level)] [ref] wkssvc_NetrWkstaUserInfo *info + ); + + /*/ /* Function0x04 */ WERROR WKSSVC_NETRWKSTAUSERSETINFO (); Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 09:35:10 UTC (rev 26142) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 09:41:50 UTC (rev 26143) @@ -112,11 +112,11 @@ } -/* - WKSSVC_NETRWKSTAUSERGETINFO +/* + wkssvc_NetrWkstaUserGetInfo */ -static WERROR dcesrv_WKSSVC_NETRWKSTAUSERGETINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRWKSTAUSERGETINFO *r) +static WERROR dcesrv_wkssvc_NetrWkstaUserGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrWkstaUserGetInfo *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 09:35:10 UTC (rev 26142) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 09:41:50 UTC (rev 26143) @@ -22,6 +22,8 @@ #include torture/torture.h #include librpc/gen_ndr/ndr_wkssvc_c.h #include torture/rpc/rpc.h +#include lib/cmdline/popt_common.h +#include param/param.h static bool test_NetWkstaGetInfo(struct torture_context *tctx, struct dcerpc_pipe *p) @@ -129,6 +131,53 @@ return true; } + +static bool test_NetrWkstaUserGetInfo(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrWkstaUserGetInfo r; + union wkssvc_NetrWkstaUserInfo info; + const char *dom = lp_workgroup(global_loadparm); + struct cli_credentials *creds = cmdline_credentials; + const char *user = cli_credentials_get_username(creds); + int i; + + const struct { + const char *unknown; + uint32_t level; + WERROR result; + } tests[] = { + { NULL, 0, WERR_NO_SUCH_LOGON_SESSION }, + { NULL, 1, WERR_NO_SUCH_LOGON_SESSION }, + { NULL, 1101, WERR_OK }, + { dom, 0, WERR_INVALID_PARAM }, + { dom, 1, WERR_INVALID_PARAM }, + { dom, 1101, WERR_INVALID_PARAM }, + { user, 0, WERR_INVALID_PARAM }, + { user, 1, WERR_INVALID_PARAM }, + { user, 1101, WERR_INVALID_PARAM }, + }; + + for (i=0; iARRAY_SIZE(tests); i++) { + r.in.unknown = tests[i].unknown; + r.in.level = tests[i].level; + r.out.info = info; + + torture_comment(tctx, testing NetrWkstaUserGetInfo level %u\n, + r.in.level); + + status = dcerpc_wkssvc_NetrWkstaUserGetInfo(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrWkstaUserGetInfo failed); + torture_assert_werr_equal(tctx, r.out.result, + tests[i].result, + NetrWkstaUserGetInfo failed); + } + + return true; +} + struct torture_suite *torture_rpc_wkssvc
svn commit: samba r26144 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc
Author: gd Date: 2007-11-27 09:49:19 + (Tue, 27 Nov 2007) New Revision: 26144 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26144 Log: Add IDL and torture test for wkssvc_NetrWkstaTransportAdd and wkssvc_NetrWkstaTransportDel. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 09:41:50 UTC (rev 26143) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 09:49:19 UTC (rev 26144) @@ -232,26 +232,39 @@ typedef union { [case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0; - [default] ; } wkssvc_NetWkstaTransportCtr; + typedef struct { + uint32 level; + [switch_is(level)] wkssvc_NetWkstaTransportCtr ctr; + } wkssvc_NetWkstaTransportInfo; + WERROR wkssvc_NetWkstaTransportEnum ( [in] [string,charset(UTF16)] uint16 *server_name, - [in,out] uint32 level, - [in,out,switch_is(level),ref] wkssvc_NetWkstaTransportCtr *ctr, + [in,out,ref] wkssvc_NetWkstaTransportInfo *info, [in] uint32 max_buffer, - [out]uint32 totalentries, + [out,ref]uint32 *total_entries, [in,out] uint32 *resume_handle ); - /*/ /* Function0x06 */ - WERROR WKSSVC_NETRWKSTATRANSPORTADD (); + /* only supported on NT */ + WERROR wkssvc_NetrWkstaTransportAdd( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] uint32 level, /* must be 0 */ + [in] [ref] wkssvc_NetWkstaTransportInfo0 *info0, + [in,out] uint32 *parm_err +); /*/ /* Function0x07 */ - WERROR WKSSVC_NETRWKSTATRANSPORTDEL (); + /* only supported on NT */ + WERROR wkssvc_NetrWkstaTransportDel( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [string,charset(UTF16)] uint16 *transport_name, + [in] uint32 unknown3 + ); /*/ /* Function0x08 */ Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 09:41:50 UTC (rev 26143) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 09:49:19 UTC (rev 26144) @@ -25,6 +25,8 @@ #include lib/cmdline/popt_common.h #include param/param.h +#define SMBTORTURE_TRANSPORT_NAME \\Device\\smbtrt_transport_name + static bool test_NetWkstaGetInfo(struct torture_context *tctx, struct dcerpc_pipe *p) { @@ -50,35 +52,97 @@ return true; } - static bool test_NetWkstaTransportEnum(struct torture_context *tctx, struct dcerpc_pipe *p) { NTSTATUS status; struct wkssvc_NetWkstaTransportEnum r; uint32_t resume_handle = 0; + struct wkssvc_NetWkstaTransportInfo info; union wkssvc_NetWkstaTransportCtr ctr; struct wkssvc_NetWkstaTransportCtr0 ctr0; + uint32_t total_entries = 0; ZERO_STRUCT(ctr0); ctr.ctr0 = ctr0; + info.level = 0; + info.ctr = ctr; + r.in.server_name = dcerpc_server_name(p); - r.in.level = 0; - r.in.ctr = ctr; + r.in.info = info; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = resume_handle; - r.out.ctr = ctr; + r.out.total_entries = total_entries; + r.out.info = info; r.out.resume_handle = resume_handle; + torture_comment(tctx, testing NetWkstaTransportEnum level 0\n); + status = dcerpc_wkssvc_NetWkstaTransportEnum(p, tctx, r); - torture_assert_ntstatus_ok(tctx, status, NetWkstaTransportEnum failed); + torture_assert_ntstatus_ok(tctx, status, + NetWkstaTransportEnum failed); torture_assert_werr_ok(tctx, r.out.result, talloc_asprintf(tctx, - NetWkstaTransportEnum level %u failed, r.in.level)); + NetWkstaTransportEnum level %u failed, + info.level)); return true; } +static bool test_NetrWkstaTransportAdd(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrWkstaTransportAdd r; + struct wkssvc_NetWkstaTransportInfo0 info0; + uint32_t parm_err = 0; + + ZERO_STRUCT(info0); + + info0
svn commit: samba r26145 - in branches/SAMBA_4_0/source: . rpc_server/wkssvc
Author: gd Date: 2007-11-27 09:58:18 + (Tue, 27 Nov 2007) New Revision: 26145 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26145 Log: Fix server side of wkssvc_NetWkstaTransportEnum. Guenther Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/samba4-knownfail Changeset: Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 09:49:19 UTC (rev 26144) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 09:58:18 UTC (rev 26145) @@ -138,19 +138,19 @@ static WERROR dcesrv_wkssvc_NetWkstaTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct wkssvc_NetWkstaTransportEnum *r) { - r-out.level = r-in.level; - r-out.totalentries = 0; + r-out.total_entries = 0; r-out.resume_handle = NULL; - switch (r-in.level) { + switch (r-in.info-level) { case 0: - r-out.ctr = talloc(mem_ctx, union wkssvc_NetWkstaTransportCtr); - W_ERROR_HAVE_NO_MEMORY(r-out.ctr); - r-out.ctr-ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaTransportCtr0); - W_ERROR_HAVE_NO_MEMORY(r-out.ctr-ctr0); + r-out.info = talloc(mem_ctx, struct wkssvc_NetWkstaTransportInfo); + W_ERROR_HAVE_NO_MEMORY(r-out.info); + r-out.info-level = r-in.info-level; + r-out.info-ctr.ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaTransportCtr0); + W_ERROR_HAVE_NO_MEMORY(r-out.info-ctr.ctr0); - r-out.ctr-ctr0-count = 0; - r-out.ctr-ctr0-array = NULL; + r-out.info-ctr.ctr0-count = 0; + r-out.info-ctr.ctr0-array = NULL; return WERR_NOT_SUPPORTED; @@ -162,21 +162,21 @@ } -/* - WKSSVC_NETRWKSTATRANSPORTADD +/* + wkssvc_NetrWkstaTransportAdd */ -static WERROR dcesrv_WKSSVC_NETRWKSTATRANSPORTADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRWKSTATRANSPORTADD *r) +static WERROR dcesrv_wkssvc_NetrWkstaTransportAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrWkstaTransportAdd *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } -/* - WKSSVC_NETRWKSTATRANSPORTDEL +/* + wkssvc_NetrWkstaTransportDel */ -static WERROR dcesrv_WKSSVC_NETRWKSTATRANSPORTDEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRWKSTATRANSPORTDEL *r) +static WERROR dcesrv_wkssvc_NetrWkstaTransportDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrWkstaTransportDel *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/samba4-knownfail === --- branches/SAMBA_4_0/source/samba4-knownfail 2007-11-27 09:49:19 UTC (rev 26144) +++ branches/SAMBA_4_0/source/samba4-knownfail 2007-11-27 09:58:18 UTC (rev 26145) @@ -6,8 +6,6 @@ RAW-OPLOCK.*/OPLOCK RPC-WINREG LOCAL-REGISTRY.*/security # Not implemented yet -RPC-WKSSVC.*NetWkstaGetInfo -RPC-WKSSVC.*NetWkstaTransportEnum RPC-HANDLES.*/lsarpc-shared RPC-HANDLES.*/mixed-shared RPC-EPMAPPER.*/Insert
svn commit: samba r26146 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc torture/rpc
Author: gd Date: 2007-11-27 10:07:00 + (Tue, 27 Nov 2007) New Revision: 26146 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26146 Log: Add IDL and torture test for wkssvc_NetrUseEnum(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 09:58:18 UTC (rev 26145) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 10:07:00 UTC (rev 26146) @@ -280,8 +280,67 @@ /*/ /* Function0x0b */ - WERROR WKSSVC_NETRUSEENUM (); + typedef struct { + [string,charset(UTF16)] uint16 *local; + [string,charset(UTF16)] uint16 *remote; + [string,charset(UTF16)] uint16 *password; + uint32 status; + uint32 asg_type; + uint32 ref_count; + uint32 use_count; + [string,charset(UTF16)] uint16 *user_name; + [string,charset(UTF16)] uint16 *domain_name; + } wkssvc_NetrUseInfo2; + typedef struct { + [string,charset(UTF16)] uint16 *local; + [string,charset(UTF16)] uint16 *remote; + [string,charset(UTF16)] uint16 *password; + uint32 status; + uint32 asg_type; + uint32 ref_count; + uint32 use_count; + } wkssvc_NetrUseInfo1; + + typedef struct { + [string,charset(UTF16)] uint16 *local; + [string,charset(UTF16)] uint16 *remote; + } wkssvc_NetrUseInfo0; + + typedef struct { + uint32 count; + [size_is(count)] wkssvc_NetrUseInfo2 *array; + } wkssvc_NetrUseEnumCtr2; + + typedef struct { + uint32 count; + [size_is(count)] wkssvc_NetrUseInfo1 *array; + } wkssvc_NetrUseEnumCtr1; + + typedef struct { + uint32 count; + [size_is(count)] wkssvc_NetrUseInfo0 *array; + } wkssvc_NetrUseEnumCtr0; + + typedef [switch_type(uint32)] union { + [case(0)] wkssvc_NetrUseEnumCtr0 *ctr0; + [case(1)] wkssvc_NetrUseEnumCtr1 *ctr1; + [case(2)] wkssvc_NetrUseEnumCtr2 *ctr2; + } wkssvc_NetrUseEnumCtr; + + typedef struct { + uint32 level; + [switch_is(level)] wkssvc_NetrUseEnumCtr ctr; + } wkssvc_NetrUseEnumInfo; + + WERROR wkssvc_NetrUseEnum( + [in] [string,charset(UTF16)] uint16 *server_name, + [in,out] [ref] wkssvc_NetrUseEnumInfo *info, + [in] uint32 prefmaxlen, + [out,ref] uint32 *entries_read, + [in,out] uint32 *resume_handle + ); + /*/ /* Function0x0c */ WERROR WKSSVC_NETRMESSAGEBUFFERSEND (); Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 09:58:18 UTC (rev 26145) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 10:07:00 UTC (rev 26146) @@ -212,11 +212,11 @@ } -/* - WKSSVC_NETRUSEENUM +/* + wkssvc_NetrUseEnum */ -static WERROR dcesrv_WKSSVC_NETRUSEENUM(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRUSEENUM *r) +static WERROR dcesrv_wkssvc_NetrUseEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrUseEnum *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 09:58:18 UTC (rev 26145) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 10:07:00 UTC (rev 26146) @@ -242,6 +242,62 @@ return true; } +static bool test_NetrUseEnum(struct torture_context *tctx, +struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrUseEnum r; + uint32_t handle = 0; + uint32_t entries_read = 0; + struct wkssvc_NetrUseEnumInfo info; + struct wkssvc_NetrUseEnumCtr0 *use0; + struct wkssvc_NetrUseEnumCtr1 *use1; + struct wkssvc_NetrUseEnumCtr2 *use2; + uint32_t levels[] = { 0, 1, 2 }; + int i; + + for (i=0; iARRAY_SIZE(levels); i++) { + + ZERO_STRUCT(info); + + info.level = levels[i]; + switch (info.level) { + case 0
svn commit: samba r26151 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc torture/rpc
Author: gd Date: 2007-11-27 10:34:53 + (Tue, 27 Nov 2007) New Revision: 26151 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26151 Log: Add IDL and torture test for wkssvc_NetrValidateName() and wkssvc_NetrValidateName2(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 10:29:19 UTC (rev 26150) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 10:34:53 UTC (rev 26151) @@ -404,8 +404,23 @@ /*/ /* Function0x13 */ - WERROR WKSSVC_NETRVALIDATENAME (); + typedef enum { + NetSetupUnknown = 0, + NetSetupMachine = 1, + NetSetupWorkgroup = 2, + NetSetupDomain = 3, + NetSetupNonExistentDomain = 4, + NetSetupDnsMachine = 5 + } wkssvc_NetValidateNameType; + WERROR wkssvc_NetrValidateName( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [ref] [string,charset(UTF16)] uint16 *name, + [in] [string,charset(UTF16)] uint16 *Account, + [in] [string,charset(UTF16)] uint16 *Password, + [in] wkssvc_NetValidateNameType name_type + ); + /*/ /* Function0x14 */ WERROR WKSSVC_NETRGETJOININFORMATION (); @@ -482,7 +497,13 @@ /*/ /* Function0x19 */ - WERROR WKSSVC_NETRVALIDATENAME2 (); + WERROR wkssvc_NetrValidateName2( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [ref] [string,charset(UTF16)] uint16 *name, + [in] [string,charset(UTF16)] uint16 *Account, + [in] wkssvc_PasswordBuffer *EncryptedPassword, + [in] wkssvc_NetValidateNameType name_type + ); /*/ /* Function0x1a */ Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 10:29:19 UTC (rev 26150) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 10:34:53 UTC (rev 26151) @@ -292,11 +292,11 @@ } -/* - WKSSVC_NETRVALIDATENAME +/* + wkssvc_NetrValidateName */ -static WERROR dcesrv_WKSSVC_NETRVALIDATENAME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRVALIDATENAME *r) +static WERROR dcesrv_wkssvc_NetrValidateName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrValidateName *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -352,11 +352,11 @@ } -/* - WKSSVC_NETRVALIDATENAME2 +/* + wkssvc_NetrValidateName2 */ -static WERROR dcesrv_WKSSVC_NETRVALIDATENAME2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRVALIDATENAME2 *r) +static WERROR dcesrv_wkssvc_NetrValidateName2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrValidateName2 *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 10:29:19 UTC (rev 26150) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 10:34:53 UTC (rev 26151) @@ -504,6 +504,66 @@ return true; } +static bool test_NetrValidateName(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrValidateName r; + uint16_t levels[] = {0,1,2,3,4,5}; + int i; + + for (i=0; iARRAY_SIZE(levels); i++) { + + r.in.server_name = talloc_asprintf(tctx, %s, dcerpc_server_name(p)); + r.in.name = lp_workgroup(global_loadparm); + r.in.Account = NULL; + r.in.Password = NULL; + r.in.name_type = levels[i]; + + torture_comment(tctx, testing NetrValidateName level %u\n, + r.in.name_type); + + status = dcerpc_wkssvc_NetrValidateName(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrValidateName failed); + torture_assert_werr_equal(tctx, r.out.result, + WERR_NOT_SUPPORTED
svn commit: samba r26154 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc torture/rpc
Author: gd Date: 2007-11-27 11:14:51 + (Tue, 27 Nov 2007) New Revision: 26154 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26154 Log: Add IDL and torture test for wkssvc_NetrWorkstationStatistics(). A lot of unknowns, I know... Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 11:04:51 UTC (rev 26153) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 11:14:51 UTC (rev 26154) @@ -376,8 +376,57 @@ /*/ /* Function0x0d */ - WERROR WKSSVC_NETRWORKSTATIONSTATISTICSGET (); + typedef struct { + hyper unknown1; + hyper unknown2; + hyper unknown3; + hyper unknown4; + hyper unknown5; + hyper unknown6; + hyper unknown7; + hyper unknown8; + hyper unknown9; + hyper unknown10; + hyper unknown11; + hyper unknown12; + hyper unknown13; + uint32 unknown14; + uint32 unknown15; + uint32 unknown16; + uint32 unknown17; + uint32 unknown18; + uint32 unknown19; + uint32 unknown20; + uint32 unknown21; + uint32 unknown22; + uint32 unknown23; + uint32 unknown24; + uint32 unknown25; + uint32 unknown26; + uint32 unknown27; + uint32 unknown28; + uint32 unknown29; + uint32 unknown30; + uint32 unknown31; + uint32 unknown32; + uint32 unknown33; + uint32 unknown34; + uint32 unknown35; + uint32 unknown36; + uint32 unknown37; + uint32 unknown38; + uint32 unknown39; + uint32 unknown40; + } wkssvc_NetrWorkstationStatistics; + WERROR wkssvc_NetrWorkstationStatisticsGet( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [string,charset(UTF16)] uint16 *unknown2, + [in] uint32 unknown3, + [in] uint32 unknown4, + [out] [ref] wkssvc_NetrWorkstationStatistics **info + ); + /*/ /* Function0x0e */ WERROR wkssvc_NetrLogonDomainNameAdd( Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 11:04:51 UTC (rev 26153) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 11:14:51 UTC (rev 26154) @@ -232,11 +232,11 @@ } -/* - WKSSVC_NETRWORKSTATIONSTATISTICSGET +/* + wkssvc_NetrWorkstationStatisticsGet */ -static WERROR dcesrv_WKSSVC_NETRWORKSTATIONSTATISTICSGET(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRWORKSTATIONSTATISTICSGET *r) +static WERROR dcesrv_wkssvc_NetrWorkstationStatisticsGet(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrWorkstationStatisticsGet *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 11:04:51 UTC (rev 26153) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 11:14:51 UTC (rev 26154) @@ -716,6 +716,30 @@ return true; } +static bool test_NetrWorkstationStatisticsGet(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrWorkstationStatisticsGet r; + struct wkssvc_NetrWorkstationStatistics *info; + + ZERO_STRUCT(r); + + info = talloc_zero(tctx, struct wkssvc_NetrWorkstationStatistics); + + r.in.server_name = dcerpc_server_name(p); + r.out.info = info; + + torture_comment(tctx, testing NetrWorkstationStatisticsGet\n); + + status = dcerpc_wkssvc_NetrWorkstationStatisticsGet(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrWorkstationStatisticsGet failed); + torture_assert_werr_ok(tctx, r.out.result, + NetrWorkstationStatisticsGet failed); + return true; +} + struct torture_suite *torture_rpc_wkssvc(TALLOC_CTX
svn commit: samba r26155 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc torture/rpc
Author: gd Date: 2007-11-27 11:20:34 + (Tue, 27 Nov 2007) New Revision: 26155 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26155 Log: Add IDL and torture teset for wkssvc_NetrMessageBufferSend(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 11:14:51 UTC (rev 26154) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 11:20:34 UTC (rev 26155) @@ -372,7 +372,13 @@ /*/ /* Function0x0c */ - WERROR WKSSVC_NETRMESSAGEBUFFERSEND (); + WERROR wkssvc_NetrMessageBufferSend( + [in] [string,charset(UTF16)] uint16 *server_name, + [in,ref] [string,charset(UTF16)] uint16 *message_name, + [in] [string,charset(UTF16)] uint16 *message_sender_name, + [in] [size_is(message_size)] [ref] uint8 *message_buffer, + [in] uint32 message_size + ); /*/ /* Function0x0d */ Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 11:14:51 UTC (rev 26154) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 11:20:34 UTC (rev 26155) @@ -222,11 +222,11 @@ } -/* - WKSSVC_NETRMESSAGEBUFFERSEND +/* + wkssvc_NetrMessageBufferSend */ -static WERROR dcesrv_WKSSVC_NETRMESSAGEBUFFERSEND(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRMESSAGEBUFFERSEND *r) +static WERROR dcesrv_wkssvc_NetrMessageBufferSend(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrMessageBufferSend *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 11:14:51 UTC (rev 26154) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 11:20:34 UTC (rev 26155) @@ -28,6 +28,7 @@ #define SMBTORTURE_ALTERNATE_NAME smbtrt_altname #define SMBTORTURE_TRANSPORT_NAME \\Device\\smbtrt_transport_name #define SMBTORTURE_USE_NAME S: +#define SMBTORTURE_MESSAGE smbtrt_message static bool test_NetWkstaGetInfo(struct torture_context *tctx, struct dcerpc_pipe *p) @@ -740,6 +741,35 @@ return true; } +/* only succeeds as long as the local messenger service is running - Guenther */ + +static bool test_NetrMessageBufferSend(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrMessageBufferSend r; + const char *message = SMBTORTURE_MESSAGE; + size_t size; + uint8_t *msg; + + size = push_ucs2_talloc(tctx, (void **)msg, message); + + r.in.server_name = dcerpc_server_name(p); + r.in.message_name = dcerpc_server_name(p); + r.in.message_sender_name = dcerpc_server_name(p); + r.in.message_buffer = msg; + r.in.message_size = size; + + torture_comment(tctx, testing NetrMessageBufferSend\n); + + status = dcerpc_wkssvc_NetrMessageBufferSend(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrMessageBufferSend failed); + torture_assert_werr_ok(tctx, r.out.result, + NetrMessageBufferSend failed); + return true; +} + struct torture_suite *torture_rpc_wkssvc(TALLOC_CTX *mem_ctx) { struct torture_suite *suite; @@ -790,6 +820,8 @@ torture_rpc_tcase_add_test(tcase, NetrWorkstationStatisticsGet, test_NetrWorkstationStatisticsGet); + torture_rpc_tcase_add_test(tcase, NetrMessageBufferSend, + test_NetrMessageBufferSend); return suite; }
svn commit: samba r26156 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-27 11:21:26 + (Tue, 27 Nov 2007) New Revision: 26156 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26156 Log: Choose a more speaking message in test_NetrMessageBufferSend(). Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 11:20:34 UTC (rev 26155) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 11:21:26 UTC (rev 26156) @@ -28,7 +28,7 @@ #define SMBTORTURE_ALTERNATE_NAME smbtrt_altname #define SMBTORTURE_TRANSPORT_NAME \\Device\\smbtrt_transport_name #define SMBTORTURE_USE_NAME S: -#define SMBTORTURE_MESSAGE smbtrt_message +#define SMBTORTURE_MESSAGE You are currently tortured by Samba static bool test_NetWkstaGetInfo(struct torture_context *tctx, struct dcerpc_pipe *p)
svn commit: samba r26158 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc
Author: gd Date: 2007-11-27 11:49:51 + (Tue, 27 Nov 2007) New Revision: 26158 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26158 Log: Add IDL for wkssvc_NetrRenameMachineInDomain(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 11:31:09 UTC (rev 26157) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 11:49:51 UTC (rev 26158) @@ -455,8 +455,19 @@ /*/ /* Function0x12 */ - WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN (); + typedef [bitmap32bit] bitmap { + /* TRUE: create the account in the domain */ + WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE= 0x0002 + } wkssvc_renameflags; + WERROR wkssvc_NetrRenameMachineInDomain( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [string,charset(UTF16)] uint16 *NewMachineName, + [in] [string,charset(UTF16)] uint16 *Account, + [in] [string,charset(UTF16)] uint16 *password, + [in] wkssvc_renameflags RenameOptions + ); + /*/ /* Function0x13 */ typedef enum { @@ -535,11 +546,6 @@ [in] wkssvc_joinflags unjoin_flags ); - typedef [bitmap32bit] bitmap { - /* TRUE: create the account in the domain */ - WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE= 0x0002 - } wkssvc_renameflags; - /*/ /* Function0x18 */ WERROR wkssvc_NetrRenameMachineInDomain2( Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 11:31:09 UTC (rev 26157) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 11:49:51 UTC (rev 26158) @@ -282,11 +282,11 @@ } -/* - WKSSVC_NETRRENAMEMACHINEINDOMAIN +/* + wkssvc_NetrRenameMachineInDomain */ -static WERROR dcesrv_WKSSVC_NETRRENAMEMACHINEINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRRENAMEMACHINEINDOMAIN *r) +static WERROR dcesrv_wkssvc_NetrRenameMachineInDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrRenameMachineInDomain *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -342,8 +342,8 @@ } -/* - WKSSVC_NETRRENAMEMACHINEINDOMAIN2 +/* + wkssvc_NetrRenameMachineInDomain2 */ static WERROR dcesrv_wkssvc_NetrRenameMachineInDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct wkssvc_NetrRenameMachineInDomain2 *r)
svn commit: samba r26159 - in branches/SAMBA_4_0/source/rpc_server/wkssvc: .
Author: gd Date: 2007-11-27 11:51:22 + (Tue, 27 Nov 2007) New Revision: 26159 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26159 Log: Align to coding conventions. Guenther Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 11:49:51 UTC (rev 26158) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 11:51:22 UTC (rev 26159) @@ -1,20 +1,20 @@ -/* +/* Unix SMB/CIFS implementation. endpoint server for the wkssvc pipe Copyright (C) Stefan (metze) Metzmacher 2004 - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. */ @@ -24,8 +24,8 @@ #include librpc/gen_ndr/ndr_wkssvc.h #include rpc_server/common/common.h -/* - wkssvc_NetWkstaGetInfo +/* + wkssvc_NetWkstaGetInfo */ static WERROR dcesrv_wkssvc_NetWkstaGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct wkssvc_NetWkstaGetInfo *r) @@ -42,7 +42,7 @@ case 100: { struct wkssvc_NetWkstaInfo100 *info100; - + info100 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo100); W_ERROR_HAVE_NO_MEMORY(info100); @@ -92,8 +92,8 @@ } -/* - wkssvc_NetWkstaSetInfo +/* + wkssvc_NetWkstaSetInfo */ static WERROR dcesrv_wkssvc_NetWkstaSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct wkssvc_NetWkstaSetInfo *r) @@ -102,7 +102,7 @@ } -/* +/* wkssvc_NetWkstaEnumUsers */ static WERROR dcesrv_wkssvc_NetWkstaEnumUsers(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, @@ -132,8 +132,8 @@ } -/* - wkssvc_NetWkstaTransportEnum +/* + wkssvc_NetWkstaTransportEnum */ static WERROR dcesrv_wkssvc_NetWkstaTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct wkssvc_NetWkstaTransportEnum *r) @@ -262,8 +262,8 @@ } -/* - WKSSVC_NETRJOINDOMAIN +/* + WKSSVC_NETRJOINDOMAIN */ static WERROR dcesrv_WKSSVC_NETRJOINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct WKSSVC_NETRJOINDOMAIN *r) @@ -272,8 +272,8 @@ } -/* - WKSSVC_NETRUNJOINDOMAIN +/* + WKSSVC_NETRUNJOINDOMAIN */ static WERROR dcesrv_WKSSVC_NETRUNJOINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct WKSSVC_NETRUNJOINDOMAIN *r) @@ -302,8 +302,8 @@ } -/* - WKSSVC_NETRGETJOININFORMATION +/* + WKSSVC_NETRGETJOININFORMATION */ static WERROR dcesrv_WKSSVC_NETRGETJOININFORMATION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct WKSSVC_NETRGETJOININFORMATION *r) @@ -312,8 +312,8 @@ } -/* - WKSSVC_NETRGETJOINABLEOUS +/* + WKSSVC_NETRGETJOINABLEOUS */ static WERROR dcesrv_WKSSVC_NETRGETJOINABLEOUS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct WKSSVC_NETRGETJOINABLEOUS *r) @@ -322,8 +322,8 @@ } -/* - WKSSVC_NETRJOINDOMAIN2 +/* + WKSSVC_NETRJOINDOMAIN2 */ static WERROR dcesrv_wkssvc_NetrJoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct wkssvc_NetrJoinDomain2 *r) @@ -332,8 +332,8 @@ } -/* - WKSSVC_NETRUNJOINDOMAIN2 +/* + WKSSVC_NETRUNJOINDOMAIN2 */ static WERROR dcesrv_wkssvc_NetrUnjoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct wkssvc_NetrUnjoinDomain2 *r) @@ -362,8 +362,8 @@ } -/* - WKSSVC_NETRGETJOINABLEOUS2 +/* + WKSSVC_NETRGETJOINABLEOUS2 */ static WERROR dcesrv_WKSSVC_NETRGETJOINABLEOUS2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct WKSSVC_NETRGETJOINABLEOUS2 *r)
svn commit: samba r26160 - in branches/SAMBA_4_0/source/libcli/util: .
Author: gd Date: 2007-11-27 11:58:33 + (Tue, 27 Nov 2007) New Revision: 26160 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26160 Log: Add WERR_NAME_NOT_FOUND. Guenther Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c branches/SAMBA_4_0/source/libcli/util/werror.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c === --- branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-11-27 11:51:22 UTC (rev 26159) +++ branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-11-27 11:58:33 UTC (rev 26160) @@ -133,6 +133,7 @@ { WERR_FRS_INSUFFICIENT_PRIV, WERR_FRS_INSUFFICIENT_PRIV }, { WERR_RPC_E_REMOTE_DISABLED, WERR_RPC_E_REMOTE_DISABLED }, { WERR_NOT_CONNECTED, WERR_NOT_CONNECTED }, + { WERR_NAME_NOT_FOUND, WERR_NAME_NOT_FOUND}, { NULL, W_ERROR(0) } }; Modified: branches/SAMBA_4_0/source/libcli/util/werror.h === --- branches/SAMBA_4_0/source/libcli/util/werror.h 2007-11-27 11:51:22 UTC (rev 26159) +++ branches/SAMBA_4_0/source/libcli/util/werror.h 2007-11-27 11:58:33 UTC (rev 26160) @@ -115,6 +115,7 @@ #define WERR_JOB_NOT_FOUND W_ERROR(2151) #define WERR_DEST_NOT_FOUND W_ERROR(2152) #define WERR_NOT_CONNECTED W_ERROR(2250) +#define WERR_NAME_NOT_FOUND W_ERROR(2273) #define WERR_SESSION_NOT_FOUND W_ERROR(2312) #define WERR_FID_NOT_FOUND W_ERROR(2314) #define WERR_NOT_LOCAL_DOMAIN W_ERROR(2320)
svn commit: samba r26161 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-27 12:04:03 + (Tue, 27 Nov 2007) New Revision: 26161 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26161 Log: Add (dangerous) torture tests for wkssvc_NetrRenameMachineInDomain() and wkssvc_NetrRenameMachineInDomain2(). Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 11:58:33 UTC (rev 26160) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:04:03 UTC (rev 26161) @@ -25,6 +25,7 @@ #include lib/cmdline/popt_common.h #include param/param.h +#define SMBTORTURE_MACHINE_NAME smbtrt_name #define SMBTORTURE_ALTERNATE_NAME smbtrt_altname #define SMBTORTURE_TRANSPORT_NAME \\Device\\smbtrt_transport_name #define SMBTORTURE_USE_NAME S: @@ -812,7 +813,120 @@ return true; } +static bool test_NetrRenameMachineInDomain(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrRenameMachineInDomain r; + r.in.server_name = dcerpc_server_name(p); + r.in.NewMachineName = SMBTORTURE_MACHINE_NAME; + r.in.Account = NULL; + r.in.password = NULL; + r.in.RenameOptions = 0; + + torture_comment(tctx, testing NetrRenameMachineInDomain\n); + + status = dcerpc_wkssvc_NetrRenameMachineInDomain(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrRenameMachineInDomain failed); + torture_assert_werr_equal(tctx, r.out.result, WERR_NOT_SUPPORTED, + NetrRenameMachineInDomain failed); + return true; +} + +static bool test_NetrRenameMachineInDomain2_name(struct torture_context *tctx, +struct dcerpc_pipe *p, +const char *new_name) +{ + NTSTATUS status; + struct wkssvc_NetrRenameMachineInDomain2 r; + + r.in.server_name = dcerpc_server_name(p); + r.in.NewMachineName = new_name; + r.in.Account = NULL; + r.in.EncryptedPassword = NULL; + r.in.RenameOptions = 0; + + status = dcerpc_wkssvc_NetrRenameMachineInDomain2(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrRenameMachineInDomain2 failed); + torture_assert_werr_ok(tctx, r.out.result, + NetrRenameMachineInDomain2 failed); + return true; +} + +static bool test_NetrRenameMachineInDomain2(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + const char **names_o = NULL, **names = NULL; + int num_names_o = 0, num_names = 0; + + torture_comment(tctx, testing NetrRenameMachineInDomain2\n); + + return test_NetrRenameMachineInDomain2_name(tctx, p, w2k3dc-rhber.ber.redhat.com); + + if (!test_NetrEnumerateComputerNames_level(tctx, p, + NetPrimaryComputerName, + names_o, num_names_o)) + { + return false; + } + + if (num_names_o != 1) { + return false; + } + + if (!test_NetrRenameMachineInDomain2_name(tctx, p, + SMBTORTURE_MACHINE_NAME)) + { + return false; + } + + if (!test_NetrEnumerateComputerNames_level(tctx, p, + NetPrimaryComputerName, + names, num_names)) + { + return false; + } + + if (num_names != 1) { + return false; + } + + if (strequal(names[0], names_o[0])) { + test_NetrRenameMachineInDomain2_name(tctx, p, names_o[0]); + return false; + } + + if (!strequal(names[0], SMBTORTURE_MACHINE_NAME)) { + test_NetrRenameMachineInDomain2_name(tctx, p, names_o[0]); + return false; + } + + if (!test_NetrRenameMachineInDomain2_name(tctx, p, names_o[0])) + { + return false; + } + + if (!test_NetrEnumerateComputerNames_level(tctx, p, + NetPrimaryComputerName, + names, num_names)) + { + return false; + } + + if (num_names != 1) { + return false; + } + + if (!strequal(names[0], names_o[0])) { + return false; + } + + return true; +} + static bool test_NetrWorkstationStatisticsGet(struct torture_context *tctx, struct dcerpc_pipe *p
svn commit: samba r26162 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-27 12:04:48 + (Tue, 27 Nov 2007) New Revision: 26162 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26162 Log: Remove accidental commit. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:04:03 UTC (rev 26161) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:04:48 UTC (rev 26162) @@ -864,8 +864,6 @@ torture_comment(tctx, testing NetrRenameMachineInDomain2\n); - return test_NetrRenameMachineInDomain2_name(tctx, p, w2k3dc-rhber.ber.redhat.com); - if (!test_NetrEnumerateComputerNames_level(tctx, p, NetPrimaryComputerName, names_o, num_names_o))
svn commit: samba r26163 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc torture/rpc
Author: gd Date: 2007-11-27 12:08:01 + (Tue, 27 Nov 2007) New Revision: 26163 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26163 Log: Add IDL and torture test for wkssvc_NetrGetJoinInformation(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:04:48 UTC (rev 26162) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:08:01 UTC (rev 26163) @@ -489,8 +489,19 @@ /*/ /* Function0x14 */ - WERROR WKSSVC_NETRGETJOININFORMATION (); + typedef enum { + NetSetupUnknownStatus = 0, + NetSetupUnjoined = 1, + NetSetupWorkgroupName = 2, + NetSetupDomainName = 3 + } wkssvc_NetJoinStatus; + WERROR wkssvc_NetrGetJoinInformation( + [in] [string,charset(UTF16)] uint16 *server_name, + [in,out,ref] [string,charset(UTF16)] uint16 **name_buffer, + [out,ref] wkssvc_NetJoinStatus *name_type + ); + /*/ /* Function0x15 */ WERROR WKSSVC_NETRGETJOINABLEOUS (); Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 12:04:48 UTC (rev 26162) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 12:08:01 UTC (rev 26163) @@ -303,10 +303,10 @@ /* - WKSSVC_NETRGETJOININFORMATION + wkssvc_NetrGetJoinInformation */ -static WERROR dcesrv_WKSSVC_NETRGETJOININFORMATION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRGETJOININFORMATION *r) +static WERROR dcesrv_wkssvc_NetrGetJoinInformation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrGetJoinInformation *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:04:48 UTC (rev 26162) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:08:01 UTC (rev 26163) @@ -978,6 +978,28 @@ return true; } +static bool test_NetrGetJoinInformation(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrGetJoinInformation r; + enum wkssvc_NetJoinStatus join_status; + const char *name_buffer = ; + + r.in.server_name = dcerpc_server_name(p); + r.in.name_buffer = r.out.name_buffer = name_buffer; + r.out.name_type = join_status; + + torture_comment(tctx, testing NetrGetJoinInformation\n); + + status = dcerpc_wkssvc_NetrGetJoinInformation(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, + NetrGetJoinInformation failed); + torture_assert_werr_ok(tctx, r.out.result, + NetrGetJoinInformation failed); + return true; +} + struct torture_suite *torture_rpc_wkssvc(TALLOC_CTX *mem_ctx) { struct torture_suite *suite; @@ -1036,6 +1058,9 @@ torture_rpc_tcase_add_test(tcase, NetrEnumerateComputerNames, test_NetrEnumerateComputerNames); + torture_rpc_tcase_add_test(tcase, NetrGetJoinInformation, + test_NetrGetJoinInformation); + torture_rpc_tcase_add_test(tcase, NetrWorkstationStatisticsGet, test_NetrWorkstationStatisticsGet); torture_rpc_tcase_add_test(tcase, NetrMessageBufferSend,
svn commit: samba r26164 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc
Author: gd Date: 2007-11-27 12:11:49 + (Tue, 27 Nov 2007) New Revision: 26164 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26164 Log: Add IDL for wkssvc_NetrJoinDomain() and wkssvc_NetrUnjoinDomain(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:08:01 UTC (rev 26163) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:11:49 UTC (rev 26164) @@ -447,11 +447,23 @@ /*/ /* Function0x10 */ - WERROR WKSSVC_NETRJOINDOMAIN (); + WERROR wkssvc_NetrJoinDomain( + [in] [string,charset(UTF16)] uint16 *server_name, + [in,ref] [string,charset(UTF16)] uint16 *domain_name, + [in] [string,charset(UTF16)] uint16 *account_ou, + [in] [string,charset(UTF16)] uint16 *Account, + [in] [string,charset(UTF16)] uint16 *unknown, + [in] wkssvc_joinflags join_flags + ); /*/ /* Function0x11 */ - WERROR WKSSVC_NETRUNJOINDOMAIN (); + WERROR wkssvc_NetrUnjoinDomain( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [string,charset(UTF16)] uint16 *Account, + [in] [string,charset(UTF16)] uint16 *password, + [in] wkssvc_joinflags unjoin_flags + ); /*/ /* Function0x12 */ Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 12:08:01 UTC (rev 26163) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 12:11:49 UTC (rev 26164) @@ -263,20 +263,20 @@ /* - WKSSVC_NETRJOINDOMAIN + wkssvc_NetrJoinDomain */ -static WERROR dcesrv_WKSSVC_NETRJOINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRJOINDOMAIN *r) +static WERROR dcesrv_wkssvc_NetrJoinDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrJoinDomain *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } /* - WKSSVC_NETRUNJOINDOMAIN + wkssvc_NetrUnjoinDomain */ -static WERROR dcesrv_WKSSVC_NETRUNJOINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRUNJOINDOMAIN *r) +static WERROR dcesrv_wkssvc_NetrUnjoinDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrUnjoinDomain *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); }
svn commit: samba r26165 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/wkssvc torture/rpc
Author: gd Date: 2007-11-27 12:18:23 + (Tue, 27 Nov 2007) New Revision: 26165 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26165 Log: Add IDL and torture test for wkssvc_NetrGetJoinableOus() and wkssvc_NetrGetJoinableOus2() (both unavailable remotely). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:11:49 UTC (rev 26164) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:18:23 UTC (rev 26165) @@ -516,7 +516,14 @@ /*/ /* Function0x15 */ - WERROR WKSSVC_NETRGETJOINABLEOUS (); + WERROR wkssvc_NetrGetJoinableOus( + [in] [string,charset(UTF16)] uint16 *server_name, + [in,ref] [string,charset(UTF16)] uint16 *domain_name, + [in] [string,charset(UTF16)] uint16 *Account, + [in] [string,charset(UTF16)] uint16 *unknown, + [in,out,ref] uint32 *num_ous, + [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous + ); typedef struct { uint8 data[524]; @@ -591,7 +598,14 @@ /*/ /* Function0x1a */ - WERROR WKSSVC_NETRGETJOINABLEOUS2 (); + WERROR wkssvc_NetrGetJoinableOus2( + [in] [string,charset(UTF16)] uint16 *server_name, + [in,ref] [string,charset(UTF16)] uint16 *domain_name, + [in] [string,charset(UTF16)] uint16 *Account, + [in] wkssvc_PasswordBuffer *EncryptedPassword, + [in,out,ref] uint32 *num_ous, + [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous + ); /*/ /* Function0x1b */ Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c === --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 12:11:49 UTC (rev 26164) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 12:18:23 UTC (rev 26165) @@ -313,10 +313,10 @@ /* - WKSSVC_NETRGETJOINABLEOUS + wkssvc_NetrGetJoinableOus */ -static WERROR dcesrv_WKSSVC_NETRGETJOINABLEOUS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRGETJOINABLEOUS *r) +static WERROR dcesrv_wkssvc_NetrGetJoinableOus(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrGetJoinableOus *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -363,10 +363,10 @@ /* - WKSSVC_NETRGETJOINABLEOUS2 + wkssvc_NetrGetJoinableOus2 */ -static WERROR dcesrv_WKSSVC_NETRGETJOINABLEOUS2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRGETJOINABLEOUS2 *r) +static WERROR dcesrv_wkssvc_NetrGetJoinableOus2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrGetJoinableOus2 *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:11:49 UTC (rev 26164) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:18:23 UTC (rev 26165) @@ -1000,6 +1000,57 @@ return true; } +static bool test_NetrGetJoinableOus(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrGetJoinableOus r; + uint32_t num_ous = 0; + const char **ous = NULL; + + r.in.server_name = dcerpc_server_name(p); + r.in.domain_name = lp_workgroup(global_loadparm); + r.in.Account = NULL; + r.in.unknown = NULL; + r.in.num_ous = r.out.num_ous = num_ous; + r.out.ous = ous; + + torture_comment(tctx, testing NetrGetJoinableOus\n); + + status = dcerpc_wkssvc_NetrGetJoinableOus(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, NetrGetJoinableOus failed); + torture_assert_werr_equal(tctx, r.out.result, + WERR_NOT_SUPPORTED, + NetrGetJoinableOus failed); + + return true; +} + +static bool test_NetrGetJoinableOus2(struct torture_context *tctx, +struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrGetJoinableOus2 r; + uint32_t num_ous = 0; + const char **ous = NULL
svn commit: samba r26167 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-11-27 12:26:20 + (Tue, 27 Nov 2007) New Revision: 26167 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26167 Log: Just for completeness, add some more documented wkssvc_NetWkstaInfo info level uint32s. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:23:34 UTC (rev 26166) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:26:20 UTC (rev 26167) @@ -46,6 +46,8 @@ uint32 logged_on_users; } wkssvc_NetWkstaInfo102; + /* FIXME: 302, 402 */ + typedef struct { uint32 char_wait; uint32 collection_time; @@ -112,10 +114,108 @@ uint32 errorlog_sz; } wkssvc_NetWkstaInfo1027; + /* downlevel */ typedef struct { + uint32 print_buf_time; + } wkssvc_NetWkstaInfo1028; + + /* downlevel */ + typedef struct { + uint32 wrk_heuristics; + } wkssvc_NetWkstaInfo1032; + + typedef struct { uint32 max_threads; } wkssvc_NetWkstaInfo1033; + typedef struct { + uint32 lock_quota; + } wkssvc_NetWkstaInfo1041; + + typedef struct { + uint32 lock_increment; + } wkssvc_NetWkstaInfo1042; + + typedef struct { + uint32 lock_maximum; + } wkssvc_NetWkstaInfo1043; + + typedef struct { + uint32 pipe_increment; + } wkssvc_NetWkstaInfo1044; + + typedef struct { + uint32 pipe_maximum; + } wkssvc_NetWkstaInfo1045; + + typedef struct { + uint32 dormant_file_limit; + } wkssvc_NetWkstaInfo1046; + + typedef struct { + uint32 cache_file_timeout; + } wkssvc_NetWkstaInfo1047; + + typedef struct { + uint32 use_opportunistic_locking; + } wkssvc_NetWkstaInfo1048; + + typedef struct { + uint32 use_unlock_behind; + } wkssvc_NetWkstaInfo1049; + + typedef struct { + uint32 use_close_behind; + } wkssvc_NetWkstaInfo1050; + + typedef struct { + uint32 buf_named_pipes; + } wkssvc_NetWkstaInfo1051; + + typedef struct { + uint32 use_lock_read_unlock; + } wkssvc_NetWkstaInfo1052; + + typedef struct { + uint32 utilize_nt_caching; + } wkssvc_NetWkstaInfo1053; + + typedef struct { + uint32 use_raw_read; + } wkssvc_NetWkstaInfo1054; + + typedef struct { + uint32 use_raw_write; + } wkssvc_NetWkstaInfo1055; + + typedef struct { + uint32 use_write_raw_data; + } wkssvc_NetWkstaInfo1056; + + typedef struct { + uint32 use_encryption; + } wkssvc_NetWkstaInfo1057; + + typedef struct { + uint32 buf_files_deny_write; + } wkssvc_NetWkstaInfo1058; + + typedef struct { + uint32 buf_read_only_files; + } wkssvc_NetWkstaInfo1059; + + typedef struct { + uint32 force_core_create_mode; + } wkssvc_NetWkstaInfo1060; + + typedef struct { + uint32 use_512_byte_max_transfer; + } wkssvc_NetWkstaInfo1061; + + typedef struct { + uint32 read_ahead_throughput; + } wkssvc_NetWkstaInfo1062; + typedef union { [case(100)] wkssvc_NetWkstaInfo100 *info100; [case(101)] wkssvc_NetWkstaInfo101 *info101; @@ -128,7 +228,31 @@ [case(1018)] wkssvc_NetWkstaInfo1018 *info1018; [case(1023)] wkssvc_NetWkstaInfo1023 *info1023; [case(1027)] wkssvc_NetWkstaInfo1027 *info1027; + [case(1028)] wkssvc_NetWkstaInfo1028 *info1028; + [case(1032)] wkssvc_NetWkstaInfo1032 *info1032; [case(1033)] wkssvc_NetWkstaInfo1033 *info1033; + [case(1041)] wkssvc_NetWkstaInfo1041 *info1041; + [case(1042)] wkssvc_NetWkstaInfo1042 *info1042; + [case(1043)] wkssvc_NetWkstaInfo1043 *info1043; + [case(1044)] wkssvc_NetWkstaInfo1044 *info1044; + [case(1045)] wkssvc_NetWkstaInfo1045 *info1045; + [case(1046)] wkssvc_NetWkstaInfo1046 *info1046; + [case(1047)] wkssvc_NetWkstaInfo1047 *info1047; + [case(1048)] wkssvc_NetWkstaInfo1048 *info1048; + [case(1049)] wkssvc_NetWkstaInfo1049 *info1049; + [case(1050)] wkssvc_NetWkstaInfo1050 *info1050; + [case(1051)] wkssvc_NetWkstaInfo1051 *info1051; + [case(1052)] wkssvc_NetWkstaInfo1052 *info1052; + [case(1053)] wkssvc_NetWkstaInfo1053 *info1053
svn commit: samba r26168 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-11-27 12:27:27 + (Tue, 27 Nov 2007) New Revision: 26168 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26168 Log: Add two more documented WKSSVC_JOIN_FLAGS. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:26:20 UTC (rev 26167) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:27:27 UTC (rev 26168) @@ -654,6 +654,8 @@ } wkssvc_PasswordBuffer; typedef [bitmap32bit] bitmap { + WKSSVC_JOIN_FLAGS_JOIN_WITH_NEW_NAME= 0x0400, + WKSSVC_JOIN_FLAGS_JOIN_DC_ACCOUNT = 0x0200, /* TRUE: defer setting the SPN and dNSHostName until a rename operation */ WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x0100,
svn commit: samba r26169 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-11-27 12:28:38 + (Tue, 27 Nov 2007) New Revision: 26169 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26169 Log: Use the NDR_PAHEX flag to print the encrypted wkssvc password buffer. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:27:27 UTC (rev 26168) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 12:28:38 UTC (rev 26169) @@ -1,3 +1,5 @@ +#include idl_types.h + /* wkssvc interface definitions */ @@ -649,7 +651,7 @@ [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous ); - typedef struct { + typedef [flag(NDR_PAHEX)] struct { uint8 data[524]; } wkssvc_PasswordBuffer; @@ -667,7 +669,7 @@ /* TRUE: allow the join to complete even if the account already exists */ WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x0020, - + /* TRUE: this join is part of a w9x upgrade */ WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x0010, @@ -679,7 +681,7 @@ /* TRUE: join domainFALSE: join workgroup */ WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x0001 - + } wkssvc_joinflags; /*/
svn commit: samba r26170 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-27 12:56:10 + (Tue, 27 Nov 2007) New Revision: 26170 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26170 Log: Put test_NetrUseGetInfo() in the correct order of tests. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c === --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:28:38 UTC (rev 26169) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 12:56:10 UTC (rev 26170) @@ -45,12 +45,15 @@ for (i=0;iARRAY_SIZE(levels);i++) { r.in.level = levels[i]; - torture_comment(tctx, testing NetWkstaGetInfo level %u\n, r.in.level); + torture_comment(tctx, testing NetWkstaGetInfo level %u\n, + r.in.level); status = dcerpc_wkssvc_NetWkstaGetInfo(p, tctx, r); torture_assert_ntstatus_ok(tctx, status, - talloc_asprintf(tctx, NetWkstaGetInfo level %u failed, r.in.level)); + talloc_asprintf(tctx, NetWkstaGetInfo level %u failed, + r.in.level)); torture_assert_werr_ok(tctx, r.out.result, - talloc_asprintf(tctx, NetWkstaGetInfo level %u failed, r.in.level)); + talloc_asprintf(tctx, NetWkstaGetInfo level %u failed, + r.in.level)); } return true; @@ -1068,8 +1071,6 @@ test_NetWkstaTransportEnum); torture_rpc_tcase_add_test(tcase, NetrWkstaTransportDel, test_NetrWkstaTransportDel); - torture_rpc_tcase_add_test(tcase, NetrUseGetInfo, - test_NetrUseGetInfo); torture_rpc_tcase_add_test(tcase, NetrWkstaTransportAdd, test_NetrWkstaTransportAdd); @@ -1080,6 +1081,8 @@ torture_rpc_tcase_add_test(tcase, NetrUseDel, test_NetrUseDel); + torture_rpc_tcase_add_test(tcase, NetrUseGetInfo, + test_NetrUseGetInfo); torture_rpc_tcase_add_test(tcase, NetrUseEnum, test_NetrUseEnum); torture_rpc_tcase_add_test(tcase, NetrUseAdd,
svn commit: samba r26172 - in branches/SAMBA_4_0/source: .
Author: gd Date: 2007-11-27 13:23:01 + (Tue, 27 Nov 2007) New Revision: 26172 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26172 Log: Skip testing wkssvc against us, we only have dummy support anyway. Guenther Modified: branches/SAMBA_4_0/source/samba4-knownfail Changeset: Modified: branches/SAMBA_4_0/source/samba4-knownfail === --- branches/SAMBA_4_0/source/samba4-knownfail 2007-11-27 12:59:35 UTC (rev 26171) +++ branches/SAMBA_4_0/source/samba4-knownfail 2007-11-27 13:23:01 UTC (rev 26172) @@ -6,6 +6,7 @@ RAW-OPLOCK.*/OPLOCK RPC-WINREG LOCAL-REGISTRY.*/security # Not implemented yet +RPC-WKSSVC RPC-HANDLES.*/lsarpc-shared RPC-HANDLES.*/mixed-shared RPC-EPMAPPER.*/Insert
svn commit: samba r26176 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-11-27 18:13:24 + (Tue, 27 Nov 2007) New Revision: 26176 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26176 Log: Fix in,out mismatch in wkssvc_NetrWkstaUserSetInfo(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl === --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 17:19:29 UTC (rev 26175) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 18:13:24 UTC (rev 26176) @@ -339,7 +339,7 @@ WERROR wkssvc_NetrWkstaUserSetInfo( [in] [string,charset(UTF16)] uint16 *unknown, [in] uint32 level, - [out,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info, + [in,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info, [in,out] uint32 *parm_err );
svn commit: samba r26133 - in branches/SAMBA_4_0/source/libcli/util: .
Author: gd Date: 2007-11-26 23:58:39 + (Mon, 26 Nov 2007) New Revision: 26133 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26133 Log: Add some more error codes from wkssvc testing. Guenther Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c branches/SAMBA_4_0/source/libcli/util/werror.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c === --- branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-11-26 21:12:01 UTC (rev 26132) +++ branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-11-26 23:58:39 UTC (rev 26133) @@ -41,6 +41,7 @@ { WERR_FILE_EXISTS, WERR_FILE_EXISTS }, { WERR_INVALID_PARAM, WERR_INVALID_PARAM }, { WERR_NOT_SUPPORTED, WERR_NOT_SUPPORTED }, + { WERR_DUP_NAME, WERR_DUP_NAME }, { WERR_BAD_PASSWORD, WERR_BAD_PASSWORD }, { WERR_NOMEM, WERR_NOMEM }, { WERR_INVALID_NAME, WERR_INVALID_NAME }, @@ -62,6 +63,7 @@ { WERR_DEST_NOT_FOUND, WERR_DEST_NOT_FOUND }, { WERR_NOT_LOCAL_DOMAIN, WERR_NOT_LOCAL_DOMAIN }, { WERR_DOMAIN_CONTROLLER_NOT_FOUND, WERR_DOMAIN_CONTROLLER_NOT_FOUND }, + { WERR_TIME_DIFF_AT_DC, WERR_TIME_DIFF_AT_DC }, { WERR_SETUP_NOT_JOINED, WERR_SETUP_NOT_JOINED }, { WERR_SETUP_ALREADY_JOINED, WERR_SETUP_ALREADY_JOINED }, { WERR_SETUP_DOMAIN_CONTROLLER, WERR_SETUP_DOMAIN_CONTROLLER }, @@ -84,6 +86,7 @@ { WERR_INVALID_COMPUTERNAME, WERR_INVALID_COMPUTERNAME }, { WERR_INVALID_DOMAINNAME, WERR_INVALID_DOMAINNAME }, { WERR_NO_LOGON_SERVERS, WERR_NO_LOGON_SERVERS }, + { WERR_NO_SUCH_LOGON_SESSION, WERR_NO_SUCH_LOGON_SESSION }, { WERR_NO_SUCH_PRIVILEGE, WERR_NO_SUCH_PRIVILEGE }, { WERR_PRIVILEGE_NOT_HELD, WERR_PRIVILEGE_NOT_HELD }, { WERR_NO_SUCH_USER, WERR_NO_SUCH_USER }, @@ -128,6 +131,8 @@ { WERR_FRS_INVALID_SERVICE_PARAMETER, WERR_FRS_INVALID_SERVICE_PARAMETER }, { WERR_FRS_SYSVOL_IS_BUSY, WERR_FRS_SYSVOL_IS_BUSY }, { WERR_FRS_INSUFFICIENT_PRIV, WERR_FRS_INSUFFICIENT_PRIV }, + { WERR_RPC_E_REMOTE_DISABLED, WERR_RPC_E_REMOTE_DISABLED }, + { WERR_NOT_CONNECTED, WERR_NOT_CONNECTED }, { NULL, W_ERROR(0) } }; Modified: branches/SAMBA_4_0/source/libcli/util/werror.h === --- branches/SAMBA_4_0/source/libcli/util/werror.h 2007-11-26 21:12:01 UTC (rev 26132) +++ branches/SAMBA_4_0/source/libcli/util/werror.h 2007-11-26 23:58:39 UTC (rev 26133) @@ -70,6 +70,7 @@ #define WERR_NOMEM W_ERROR(8) #define WERR_GENERAL_FAILURE W_ERROR(31) #define WERR_NOT_SUPPORTED W_ERROR(50) +#define WERR_DUP_NAME W_ERROR(52) #define WERR_BAD_NETPATH W_ERROR(53) #define WERR_BAD_NET_RESP W_ERROR(58) #define WERR_UNEXP_NET_ERR W_ERROR(59) @@ -97,6 +98,7 @@ #define WERR_REVISION_MISMATCH W_ERROR(1306) #define WERR_INVALID_OWNER W_ERROR(1307) #define WERR_NO_LOGON_SERVERS W_ERROR(1311) +#define WERR_NO_SUCH_LOGON_SESSION W_ERROR(1312) #define WERR_NO_SUCH_PRIVILEGE W_ERROR(1313) #define WERR_PRIVILEGE_NOT_HELD W_ERROR(1314) #define WERR_NO_SUCH_USER W_ERROR(1317) @@ -112,10 +114,12 @@ #define WERR_BUF_TOO_SMALL W_ERROR(2123) #define WERR_JOB_NOT_FOUND W_ERROR(2151) #define WERR_DEST_NOT_FOUND W_ERROR(2152) +#define WERR_NOT_CONNECTED W_ERROR(2250) #define WERR_SESSION_NOT_FOUND W_ERROR(2312) #define WERR_FID_NOT_FOUND W_ERROR(2314) #define WERR_NOT_LOCAL_DOMAIN W_ERROR(2320) #define WERR_DOMAIN_CONTROLLER_NOT_FOUND W_ERROR(2453) +#define WERR_TIME_DIFF_AT_DC W_ERROR(2457) #define WERR_SETUP_ALREADY_JOINED W_ERROR(2691) #define WERR_SETUP_NOT_JOINED W_ERROR(2692) @@ -189,6 +193,10 @@ #define WERR_FRS_SYSVOL_IS_BUSY W_ERROR(FRS_ERR_BASE+15) #define WERR_FRS_INVALID_SERVICE_PARAMETER W_ERROR(FRS_ERR_BASE+17) +/* RPC errors */ +#define WERR_RPC_E_INVALID_HEADER W_ERROR(0x80010111) +#define WERR_RPC_E_REMOTE_DISABLED W_ERROR(0x8001011c) + /* SEC errors */ #define WERR_SEC_E_ENCRYPT_FAILURE W_ERROR(0x80090329) #define WERR_SEC_E_DECRYPT_FAILURE W_ERROR(0x80090330)
svn commit: samba r26060 - in branches/SAMBA_4_0/source/libcli/util: .
Author: gd Date: 2007-11-20 12:43:11 + (Tue, 20 Nov 2007) New Revision: 26060 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=26060 Log: Add some error codes from remote join api. Guenther Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c branches/SAMBA_4_0/source/libcli/util/werror.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c === --- branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-11-20 11:40:41 UTC (rev 26059) +++ branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-11-20 12:43:11 UTC (rev 26060) @@ -62,6 +62,9 @@ { WERR_DEST_NOT_FOUND, WERR_DEST_NOT_FOUND }, { WERR_NOT_LOCAL_DOMAIN, WERR_NOT_LOCAL_DOMAIN }, { WERR_DOMAIN_CONTROLLER_NOT_FOUND, WERR_DOMAIN_CONTROLLER_NOT_FOUND }, + { WERR_SETUP_NOT_JOINED, WERR_SETUP_NOT_JOINED }, + { WERR_SETUP_ALREADY_JOINED, WERR_SETUP_ALREADY_JOINED }, + { WERR_SETUP_DOMAIN_CONTROLLER, WERR_SETUP_DOMAIN_CONTROLLER }, { WERR_DEVICE_NOT_AVAILABLE, WERR_DEVICE_NOT_AVAILABLE }, { WERR_PRINTER_DRIVER_IN_USE, WERR_PRINTER_DRIVER_IN_USE }, { WERR_STATUS_MORE_ENTRIES, WERR_STATUS_MORE_ENTRIES }, Modified: branches/SAMBA_4_0/source/libcli/util/werror.h === --- branches/SAMBA_4_0/source/libcli/util/werror.h 2007-11-20 11:40:41 UTC (rev 26059) +++ branches/SAMBA_4_0/source/libcli/util/werror.h 2007-11-20 12:43:11 UTC (rev 26060) @@ -116,6 +116,11 @@ #define WERR_FID_NOT_FOUND W_ERROR(2314) #define WERR_NOT_LOCAL_DOMAIN W_ERROR(2320) #define WERR_DOMAIN_CONTROLLER_NOT_FOUND W_ERROR(2453) + +#define WERR_SETUP_ALREADY_JOINED W_ERROR(2691) +#define WERR_SETUP_NOT_JOINED W_ERROR(2692) +#define WERR_SETUP_DOMAIN_CONTROLLER W_ERROR(2693) + #define WERR_DEVICE_NOT_AVAILABLE W_ERROR(4319) #define WERR_STATUS_MORE_ENTRIES W_ERROR(0x0105)
svn commit: samba r25951 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-11-14 09:48:12 + (Wed, 14 Nov 2007) New Revision: 25951 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25951 Log: Add missing DS_SERVER_NDNC bit to netr_DsR_DcFlags. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl === --- branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-11-14 03:55:05 UTC (rev 25950) +++ branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-11-14 09:48:12 UTC (rev 25951) @@ -946,6 +946,7 @@ DS_SERVER_CLOSEST= NBT_SERVER_CLOSEST, DS_SERVER_WRITABLE = NBT_SERVER_WRITABLE, DS_SERVER_GOOD_TIMESERV = NBT_SERVER_GOOD_TIMESERV, + DS_SERVER_NDNC = 0x0400, DS_DNS_CONTROLLER= 0x2000, DS_DNS_DOMAIN= 0x4000, DS_DNS_FOREST= 0x8000
svn commit: samba r25896 - in branches/SAMBA_4_0/source/rpc_server/netlogon: .
Author: gd Date: 2007-11-07 18:42:00 + (Wed, 07 Nov 2007) New Revision: 25896 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25896 Log: Rename netlogon server stubs. Guenther Modified: branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c Changeset: Modified: branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c === --- branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c 2007-11-07 18:22:56 UTC (rev 25895) +++ branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c 2007-11-07 18:42:00 UTC (rev 25896) @@ -965,10 +965,10 @@ /* - netr_DSRADDRESSTOSITENAMESW + netr_DsRAddressToSitenamesW */ -static WERROR dcesrv_netr_DSRADDRESSTOSITENAMESW(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct netr_DSRADDRESSTOSITENAMESW *r) +static WERROR dcesrv_netr_DsRAddressToSitenamesW(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct netr_DsRAddressToSitenamesW *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } @@ -1110,10 +1110,10 @@ /* - netr_DSRADDRESSTOSITENAMESEXW + netr_DsRAddressToSitenamesExW */ -static WERROR dcesrv_netr_DSRADDRESSTOSITENAMESEXW(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct netr_DSRADDRESSTOSITENAMESEXW *r) +static WERROR dcesrv_netr_DsRAddressToSitenamesExW(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct netr_DsRAddressToSitenamesExW *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); }
svn commit: samba r25894 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-11-07 18:21:12 + (Wed, 07 Nov 2007) New Revision: 25894 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25894 Log: Add IDL for netr_DsRAddressToSitenamesW and netr_DsRAddressToSitenamesExW. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/netlogon.idl === --- branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-11-07 07:13:44 UTC (rev 25893) +++ branches/SAMBA_4_0/source/librpc/idl/netlogon.idl 2007-11-07 18:21:12 UTC (rev 25894) @@ -1116,8 +1116,23 @@ // /* Function 0x21 */ - WERROR netr_DSRADDRESSTOSITENAMESW(); + typedef struct { + uint32 count; + [size_is(count)] lsa_String *sitename; + } netr_DsRAddressToSitenamesWCtr; + typedef struct { + [size_is(size)] uint8 *buffer; + uint32 size; + } netr_DsRAddress; + + WERROR netr_DsRAddressToSitenamesW( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [range(0,32000)] uint32 count, + [in] [size_is(count)] [ref] netr_DsRAddress *addresses, + [out] [ref] netr_DsRAddressToSitenamesWCtr **ctr + ); + // /* Function 0x22 */ WERROR netr_DsRGetDCNameEx2( @@ -1141,8 +1156,19 @@ // /* Function 0x25 */ - WERROR netr_DSRADDRESSTOSITENAMESEXW(); + typedef struct { + uint32 count; + [size_is(count)] lsa_String *sitename; + [size_is(count)] lsa_String *subnetname; + } netr_DsRAddressToSitenamesExWCtr; + WERROR netr_DsRAddressToSitenamesExW( + [in] [string,charset(UTF16)] uint16 *server_name, + [in] [range(0,32000)] uint32 count, + [in] [size_is(count)] [ref] netr_DsRAddress *addresses, + [out] [ref] netr_DsRAddressToSitenamesExWCtr **ctr + ); + // /* Function 0x26 */
svn commit: samba r25895 - in branches/SAMBA_4_0/source: . torture/rpc
Author: gd Date: 2007-11-07 18:22:56 + (Wed, 07 Nov 2007) New Revision: 25895 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25895 Log: Add torture test for netr_DsRAddressToSitenamesW and netr_DsRAddressToSitenamesExW. Guenther Modified: branches/SAMBA_4_0/source/samba4-knownfail branches/SAMBA_4_0/source/torture/rpc/netlogon.c Changeset: Modified: branches/SAMBA_4_0/source/samba4-knownfail === --- branches/SAMBA_4_0/source/samba4-knownfail 2007-11-07 18:21:12 UTC (rev 25894) +++ branches/SAMBA_4_0/source/samba4-knownfail 2007-11-07 18:22:56 UTC (rev 25895) @@ -26,5 +26,7 @@ RPC-NETLOGON.*/GetAnyDCName RPC-NETLOGON.*/DsrEnumerateDomainTrusts RPC-NETLOGON.*/DsrGetDcSiteCoverageW +RPC-NETLOGON.*/DsRAddressToSitenamesW +RPC-NETLOGON.*/DsRAddressToSitenamesExW BASE-CHARSET.*/Testing partial surrogate .*NET-API-DELSHARE.* # DelShare isn't implemented yet Modified: branches/SAMBA_4_0/source/torture/rpc/netlogon.c === --- branches/SAMBA_4_0/source/torture/rpc/netlogon.c2007-11-07 18:21:12 UTC (rev 25894) +++ branches/SAMBA_4_0/source/torture/rpc/netlogon.c2007-11-07 18:22:56 UTC (rev 25895) @@ -1176,7 +1176,70 @@ return true; } +static bool test_netr_DsRAddressToSitenamesW(struct torture_context *tctx, +struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct netr_DsRAddressToSitenamesW r; + struct netr_DsRAddress addr; + struct netr_DsRAddressToSitenamesWCtr *ctr; + ctr = talloc(tctx, struct netr_DsRAddressToSitenamesWCtr); + + addr.size = 16; + addr.buffer = talloc_zero_array(tctx, uint8_t, addr.size); + + addr.buffer[0] = 2; /* AF_INET */ + addr.buffer[4] = 127; + addr.buffer[5] = 0; + addr.buffer[6] = 0; + addr.buffer[7] = 1; + + r.in.server_name = talloc_asprintf(tctx, %s, dcerpc_server_name(p)); + r.in.count = 1; + r.in.addresses = talloc_zero_array(tctx, struct netr_DsRAddress, r.in.count); + r.in.addresses[0] = addr; + r.out.ctr = ctr; + + status = dcerpc_netr_DsRAddressToSitenamesW(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, failed); + torture_assert_werr_ok(tctx, r.out.result, failed); + + return true; +} + +static bool test_netr_DsRAddressToSitenamesExW(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct netr_DsRAddressToSitenamesExW r; + struct netr_DsRAddress addr; + struct netr_DsRAddressToSitenamesExWCtr *ctr; + + ctr = talloc(tctx, struct netr_DsRAddressToSitenamesExWCtr); + + addr.size = 16; + addr.buffer = talloc_zero_array(tctx, uint8_t, addr.size); + + addr.buffer[0] = 2; /* AF_INET */ + addr.buffer[4] = 127; + addr.buffer[5] = 0; + addr.buffer[6] = 0; + addr.buffer[7] = 1; + + r.in.server_name = talloc_asprintf(tctx, %s, dcerpc_server_name(p)); + r.in.count = 1; + r.in.addresses = talloc_zero_array(tctx, struct netr_DsRAddress, r.in.count); + r.in.addresses[0] = addr; + r.out.ctr = ctr; + + status = dcerpc_netr_DsRAddressToSitenamesExW(p, tctx, r); + torture_assert_ntstatus_ok(tctx, status, failed); + torture_assert_werr_ok(tctx, r.out.result, failed); + + return true; +} + static bool test_GetDomainInfo(struct torture_context *tctx, struct dcerpc_pipe *p, struct cli_credentials *machine_credentials) @@ -1398,7 +1461,6 @@ tcase = torture_suite_add_machine_rpc_iface_tcase(suite, netlogon, ndr_table_netlogon, TEST_MACHINE_NAME); - torture_rpc_tcase_add_test(tcase, LogonUasLogon, test_LogonUasLogon); torture_rpc_tcase_add_test(tcase, LogonUasLogoff, test_LogonUasLogoff); torture_rpc_tcase_add_test_creds(tcase, SamLogon, test_SamLogon); @@ -1423,6 +1485,8 @@ torture_rpc_tcase_add_test(tcase, DsRGetDCNameEx, test_netr_DsRGetDCNameEx); torture_rpc_tcase_add_test(tcase, DsRGetDCNameEx2, test_netr_DsRGetDCNameEx2); torture_rpc_tcase_add_test(tcase, DsrGetDcSiteCoverageW, test_netr_DsrGetDcSiteCoverageW); + torture_rpc_tcase_add_test(tcase, DsRAddressToSitenamesW, test_netr_DsRAddressToSitenamesW); + torture_rpc_tcase_add_test(tcase, DsRAddressToSitenamesExW, test_netr_DsRAddressToSitenamesExW); return suite; }
svn commit: samba r25897 - in branches/SAMBA_4_0/source/libcli/util: .
Author: gd Date: 2007-11-07 20:45:04 + (Wed, 07 Nov 2007) New Revision: 25897 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25897 Log: Add WERR_INVALID_FLAGS. Guenther Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c branches/SAMBA_4_0/source/libcli/util/werror.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c === --- branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-11-07 18:42:00 UTC (rev 25896) +++ branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-11-07 20:45:04 UTC (rev 25897) @@ -111,6 +111,7 @@ { WERR_PRINTQ_FULL, WERR_PRINTQ_FULL }, { WERR_NO_SPOOL_SPACE, WERR_NO_SPOOL_SPACE }, { WERR_CAN_NOT_COMPLETE, WERR_CAN_NOT_COMPLETE }, + { WERR_INVALID_FLAGS, WERR_INVALID_FLAGS }, { WERR_NOT_FOUND, WERR_NOT_FOUND }, { WERR_SERVER_UNAVAILABLE, WERR_SERVER_UNAVAILABLE }, { WERR_CLASS_NOT_REGISTERED, WERR_CLASS_NOT_REGISTERED }, Modified: branches/SAMBA_4_0/source/libcli/util/werror.h === --- branches/SAMBA_4_0/source/libcli/util/werror.h 2007-11-07 18:42:00 UTC (rev 25896) +++ branches/SAMBA_4_0/source/libcli/util/werror.h 2007-11-07 20:45:04 UTC (rev 25897) @@ -88,6 +88,7 @@ #define WERR_NO_MORE_ITEMS W_ERROR(259) #define WERR_MORE_DATA W_ERROR(234) #define WERR_CAN_NOT_COMPLETE W_ERROR(1003) +#define WERR_INVALID_FLAGS W_ERROR(1004) #define WERR_NOT_FOUND W_ERROR(1168) #define WERR_INVALID_COMPUTERNAME W_ERROR(1210) #define WERR_INVALID_DOMAINNAME W_ERROR(1212)
svn commit: samba r25845 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-06 00:49:54 + (Tue, 06 Nov 2007) New Revision: 25845 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25845 Log: Reformat the dfs test. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/dfs.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/dfs.c === --- branches/SAMBA_4_0/source/torture/rpc/dfs.c 2007-11-05 21:57:44 UTC (rev 25844) +++ branches/SAMBA_4_0/source/torture/rpc/dfs.c 2007-11-06 00:49:54 UTC (rev 25845) @@ -1,19 +1,19 @@ -/* +/* Unix SMB/CIFS implementation. test suite for rpc dfs operations Copyright (C) Andrew Tridgell 2003 - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. @@ -43,7 +43,10 @@ return true;\ }\ -static bool test_NetShareAdd(TALLOC_CTX *mem_ctx, const char *host, const char *sharename, const char *dir) +static bool test_NetShareAdd(TALLOC_CTX *mem_ctx, +const char *host, +const char *sharename, +const char *dir) { NTSTATUS status; struct srvsvc_NetShareInfo2 i; @@ -73,7 +76,7 @@ status = libnet_AddShare(libnetctx, mem_ctx, r); if (!NT_STATUS_IS_OK(status)) { - d_printf(Failed to add new share: %s (%s)\n, + d_printf(Failed to add new share: %s (%s)\n, nt_errstr(status), r.out.error_string); return false; } @@ -81,7 +84,9 @@ return true; } -static bool test_NetShareDel(TALLOC_CTX *mem_ctx, const char *host, const char *sharename) +static bool test_NetShareDel(TALLOC_CTX *mem_ctx, +const char *host, +const char *sharename) { NTSTATUS status; struct libnet_context* libnetctx; @@ -100,7 +105,7 @@ status = libnet_DelShare(libnetctx, mem_ctx, r); if (!NT_STATUS_IS_OK(status)) { - d_printf(Failed to delete share: %s (%s)\n, + d_printf(Failed to delete share: %s (%s)\n, nt_errstr(status), r.out.error_string); return false; } @@ -108,10 +113,10 @@ return true; } -static bool test_CreateDir(TALLOC_CTX *mem_ctx, - struct smbcli_state **cli, - const char *host, - const char *share, +static bool test_CreateDir(TALLOC_CTX *mem_ctx, + struct smbcli_state **cli, + const char *host, + const char *share, const char *dir) { printf(Creating directory %s\n, dir); @@ -127,19 +132,23 @@ return true; } -static bool test_DeleteDir(struct smbcli_state *cli, const char *dir) +static bool test_DeleteDir(struct smbcli_state *cli, + const char *dir) { printf(Deleting directory %s\n, dir); if (smbcli_deltree(cli-tree, dir) == -1) { - printf(Unable to delete dir %s - %s\n, dir, smbcli_errstr(cli-tree)); + printf(Unable to delete dir %s - %s\n, dir, + smbcli_errstr(cli-tree)); return false; } return true; } -static bool test_GetManagerVersion(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, enum dfs_ManagerVersion *version) +static bool test_GetManagerVersion(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + enum dfs_ManagerVersion *version) { NTSTATUS status; struct dfs_GetManagerVersion r; @@ -155,7 +164,9 @@ return true; } -static bool test_ManagerInitialize(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, const char *host) +static bool test_ManagerInitialize(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + const char *host) { NTSTATUS status; enum dfs_ManagerVersion version; @@ -175,7 +186,8 @@ printf(ManagerInitialize failed - %s\n, nt_errstr(status)); return false; } else if (!W_ERROR_IS_OK(r.out.result)) { - printf(dfs_ManagerInitialize
svn commit: samba r25848 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc
Author: gd Date: 2007-11-06 01:24:07 + (Tue, 06 Nov 2007) New Revision: 25848 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25848 Log: Add IDL and torture test for dfs_SetDcAddress and dfs_GetDcAddress. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/dfs.idl branches/SAMBA_4_0/source/torture/rpc/dfs.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/dfs.idl === --- branches/SAMBA_4_0/source/librpc/idl/dfs.idl2007-11-06 01:05:26 UTC (rev 25847) +++ branches/SAMBA_4_0/source/librpc/idl/dfs.idl2007-11-06 01:24:07 UTC (rev 25848) @@ -377,10 +377,20 @@ ); /* Function 0x10 */ - WERROR dfs_GetDcAddress(); + WERROR dfs_GetDcAddress( + [in][string,charset(UTF16)] uint16 servername[], + [in,out,ref][string,charset(UTF16)] uint16 **server_fullname, + [in,out,ref]boolean8 *is_root, + [in,out,ref]uint32 *ttl + ); /* Function 0x11 */ - WERROR dfs_SetDcAddress(); + WERROR dfs_SetDcAddress( + [in][string,charset(UTF16)] uint16 servername[], + [in][string,charset(UTF16)] uint16 server_fullname[], + [in]uint32 flags, + [in]uint32 ttl + ); /* Function 0x12 */ WERROR dfs_FlushFtTable( Modified: branches/SAMBA_4_0/source/torture/rpc/dfs.c === --- branches/SAMBA_4_0/source/torture/rpc/dfs.c 2007-11-06 01:05:26 UTC (rev 25847) +++ branches/SAMBA_4_0/source/torture/rpc/dfs.c 2007-11-06 01:24:07 UTC (rev 25848) @@ -522,6 +522,80 @@ return ret; } +static bool test_GetDcAddress(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + const char *host) +{ + NTSTATUS status; + struct dfs_GetDcAddress r; + uint8_t is_root = 0; + uint32_t ttl = 0; + const char *ptr; + + printf(Testing GetDcAddress\n); + + ptr = host; + + r.in.servername = host; + r.in.server_fullname = r.out.server_fullname = ptr; + r.in.is_root = r.out.is_root = is_root; + r.in.ttl = r.out.ttl = ttl; + + status = dcerpc_dfs_GetDcAddress(p, mem_ctx, r); + if (!NT_STATUS_IS_OK(status)) { + printf(GetDcAddress failed - %s\n, nt_errstr(status)); + return false; + } else if (!W_ERROR_IS_OK(r.out.result)) { + printf(dfs_GetDcAddress failed - %s\n, + win_errstr(r.out.result)); + return false; + } + + return true; +} + +static bool test_SetDcAddress(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + const char *host) +{ + NTSTATUS status; + struct dfs_SetDcAddress r; + + printf(Testing SetDcAddress\n); + + r.in.servername = host; + r.in.server_fullname = host; + r.in.flags = 0; + r.in.ttl = 1000; + + status = dcerpc_dfs_SetDcAddress(p, mem_ctx, r); + if (!NT_STATUS_IS_OK(status)) { + printf(SetDcAddress failed - %s\n, nt_errstr(status)); + return false; + } else if (!W_ERROR_IS_OK(r.out.result)) { + printf(dfs_SetDcAddress failed - %s\n, + win_errstr(r.out.result)); + return false; + } + + return true; +} + +static bool test_DcAddress(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + const char *host) +{ + if (!test_GetDcAddress(p, mem_ctx, host)) { + return false; + } + + if (!test_SetDcAddress(p, mem_ctx, host)) { + return false; + } + + return true; +} + bool torture_rpc_dfs(struct torture_context *torture) { NTSTATUS status; @@ -538,6 +612,7 @@ ret = test_Enum(p, torture); ret = test_EnumEx(p, torture, host); ret = test_StdRoot(p, torture, host); + ret = test_DcAddress(p, torture, host); return ret; }
svn commit: samba r25849 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-06 01:39:47 + (Tue, 06 Nov 2007) New Revision: 25849 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25849 Log: Add test for dfs FlushFtTable. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/dfs.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/dfs.c === --- branches/SAMBA_4_0/source/torture/rpc/dfs.c 2007-11-06 01:24:07 UTC (rev 25848) +++ branches/SAMBA_4_0/source/torture/rpc/dfs.c 2007-11-06 01:39:47 UTC (rev 25849) @@ -596,6 +596,47 @@ return true; } +static bool test_FlushFtTable(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + const char *host, + const char *sharename) +{ + NTSTATUS status; + struct dfs_FlushFtTable r; + enum dfs_ManagerVersion version; + + printf(Testing FlushFtTable\n); + + if (!test_GetManagerVersion(p, mem_ctx, version)) { + return false; + } + + r.in.servername = host; + r.in.rootshare = sharename; + + status = dcerpc_dfs_FlushFtTable(p, mem_ctx, r); + if (!NT_STATUS_IS_OK(status)) { + printf(FlushFtTable failed - %s\n, nt_errstr(status)); + return false; + } else if (!W_ERROR_IS_OK(r.out.result)) { + printf(dfs_FlushFtTable failed - %s\n, + win_errstr(r.out.result)); + IS_DFS_VERSION_UNSUPPORTED_CALL_W2K3(version, r.out.result); + return false; + } + + return true; +} + +static bool test_FtRoot(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + const char *host) +{ + const char *sharename = SMBTORTURE_DFS_SHARENAME; + + return test_FlushFtTable(p, mem_ctx, host, sharename); +} + bool torture_rpc_dfs(struct torture_context *torture) { NTSTATUS status; @@ -612,6 +653,7 @@ ret = test_Enum(p, torture); ret = test_EnumEx(p, torture, host); ret = test_StdRoot(p, torture, host); + ret = test_FtRoot(p, torture, host); ret = test_DcAddress(p, torture, host); return ret;
svn commit: samba r25801 - in branches/SAMBA_4_0/source/libcli/security: .
Author: gd Date: 2007-11-02 11:51:26 + (Fri, 02 Nov 2007) New Revision: 25801 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25801 Log: Add security_ace_create() function. Guenther Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c Changeset: Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c === --- branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-11-02 11:36:06 UTC (rev 25800) +++ branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-11-02 11:51:26 UTC (rev 25801) @@ -422,3 +422,32 @@ return sd; } + +struct security_ace *security_ace_create(TALLOC_CTX *mem_ctx, +const char *sid_str, +enum security_ace_type type, +uint32_t access_mask, +uint8_t flags) + +{ + struct dom_sid *sid; + struct security_ace *ace; + + ace = talloc_zero(mem_ctx, struct security_ace); + if (ace == NULL) { + return NULL; + } + + sid = dom_sid_parse_talloc(ace, sid_str); + if (sid == NULL) { + talloc_free(ace); + return NULL; + } + + ace-trustee = *sid; + ace-type = type; + ace-access_mask = access_mask; + ace-flags = flags; + + return ace; +}
svn commit: samba r25799 - in branches/SAMBA_4_0/source/lib/util: .
Author: gd Date: 2007-11-02 11:33:53 + (Fri, 02 Nov 2007) New Revision: 25799 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25799 Log: Add dump_data_skip_zeros() which omits 16 zero bytes in a row (if not at the beginning or the end of a blob). Usefull when inspecting protocols that exchange huge mostly empty blobs. Guenther Modified: branches/SAMBA_4_0/source/lib/util/util.c branches/SAMBA_4_0/source/lib/util/util.h Changeset: Modified: branches/SAMBA_4_0/source/lib/util/util.c === --- branches/SAMBA_4_0/source/lib/util/util.c 2007-11-02 11:01:18 UTC (rev 25798) +++ branches/SAMBA_4_0/source/lib/util/util.c 2007-11-02 11:33:53 UTC (rev 25799) @@ -393,24 +393,55 @@ * * The data is only written if the log level is at least level. */ -_PUBLIC_ void dump_data(int level, const uint8_t *buf,int len) +static void _dump_data(int level, const uint8_t *buf, int len, + bool omit_zero_bytes) { int i=0; + const uint8_t empty[16]; + bool skipped = false; + if (len=0) return; if (!DEBUGLVL(level)) return; - - DEBUGADD(level,([%03X] ,i)); + + memset(empty, '\0', 16); + for (i=0;ilen;) { + + if (i%16 == 0) { + if ((omit_zero_bytes == true) + (i 0) + (len i+16) + (memcmp(buf[i], empty, 16) == 0)) + { + i +=16; + continue; + } + + if (ilen) { + DEBUGADD(level,([%04X] ,i)); + } + } + DEBUGADD(level,(%02X ,(int)buf[i])); i++; - if (i%8 == 0) DEBUGADD(level,( )); - if (i%16 == 0) { + if (i%8 == 0) DEBUGADD(level,( )); + if (i%16 == 0) { + print_asc(level,buf[i-16],8); DEBUGADD(level,( )); print_asc(level,buf[i-8],8); DEBUGADD(level,(\n)); - if (ilen) DEBUGADD(level,([%03X] ,i)); + + if ((omit_zero_bytes == true) + (len i+16) + (memcmp(buf[i], empty, 16) == 0)) { + if (!skipped) { + DEBUGADD(level,(skipping zero buffer bytes\n)); + skipped = true; + } + } } } + if (i%16) { int n; n = 16 - (i%16); @@ -420,12 +451,35 @@ n = MIN(8,i%16); print_asc(level,buf[i-(i%16)],n); DEBUGADD(level,( )); n = (i%16) - n; - if (n0) print_asc(level,buf[i-n],n); - DEBUGADD(level,(\n)); - } + if (n0) print_asc(level,buf[i-n],n); + DEBUGADD(level,(\n)); + } + } /** + * Write dump of binary data to the log file. + * + * The data is only written if the log level is at least level. + */ +_PUBLIC_ void dump_data(int level, const uint8_t *buf, int len) +{ + return _dump_data(level, buf, len, false); +} + +/** + * Write dump of binary data to the log file. + * + * The data is only written if the log level is at least level. + * 16 zero bytes in a row are ommited + */ +_PUBLIC_ void dump_data_skip_zeros(int level, const uint8_t *buf, int len) +{ + return _dump_data(level, buf, len, true); +} + + +/** malloc that aborts with smb_panic on fail or zero size. **/ Modified: branches/SAMBA_4_0/source/lib/util/util.h === --- branches/SAMBA_4_0/source/lib/util/util.h 2007-11-02 11:01:18 UTC (rev 25798) +++ branches/SAMBA_4_0/source/lib/util/util.h 2007-11-02 11:33:53 UTC (rev 25799) @@ -656,6 +656,14 @@ _PUBLIC_ void dump_data(int level, const uint8_t *buf,int len); /** + * Write dump of binary data to the log file. + * + * The data is only written if the log level is at least level. + * 16 zero bytes in a row are ommited + */ +_PUBLIC_ void dump_data_skip_zeros(int level, const uint8_t *buf, int len); + +/** malloc that aborts with smb_panic on fail or zero size. **/ _PUBLIC_ void *smb_xmalloc(size_t size);
svn commit: samba r25807 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 14:18:07 + (Fri, 02 Nov 2007) New Revision: 25807 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25807 Log: Close handle during winreg test. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 13:48:11 UTC (rev 25806) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:18:07 UTC (rev 25807) @@ -713,6 +713,10 @@ torture_fail(tctx, CreateKey failed (OpenKey after Create didn't work)\n); + if (created !test_CloseKey(p, tctx, newhandle)) + torture_fail(tctx, +CreateKey failed (CloseKey after Open didn't work)\n); + if (created !test_DeleteKey(p, tctx, handle, TEST_KEY1)) { torture_comment(tctx, DeleteKey failed\n); ret = false;
svn commit: samba r25817 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 15:43:09 + (Fri, 02 Nov 2007) New Revision: 25817 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25817 Log: Add very basic FRSAPI InfoW test. Again, this is surely not correct but at least displays a lot of very useful information. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/frsapi.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/frsapi.c === --- branches/SAMBA_4_0/source/torture/rpc/frsapi.c 2007-11-02 15:41:55 UTC (rev 25816) +++ branches/SAMBA_4_0/source/torture/rpc/frsapi.c 2007-11-02 15:43:09 UTC (rev 25817) @@ -207,6 +207,50 @@ return true; } +static bool test_InfoW(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + int i; + + for (i=0; i10; i++) { + + struct frsapi_InfoW r; + struct frsapi_Info *info; + int d; + DATA_BLOB blob; + + ZERO_STRUCT(r); + + info = talloc_zero(tctx, struct frsapi_Info); + + r.in.length = 0x1000; + r.in.info = r.out.info = info; + + info-length = r.in.length; + info-length2 = r.in.length; + info-level = i; + info-offset = 0x2c; + info-blob_len = 0x2c; + + torture_assert_ntstatus_ok(tctx, + dcerpc_frsapi_InfoW(p, tctx, r), + InfoW failed); + + torture_assert_werr_ok(tctx, r.out.result, InfoW failed); + + /* display the formatted blob text */ + blob = r.out.info-blob; + for (d = 0; d blob.length; d++) { + if (blob.data[d]) { + printf(%c, blob.data[d]); + } + } + printf(\n); + } + + return true; +} + struct torture_suite *torture_rpc_frsapi(TALLOC_CTX *mem_ctx) { struct torture_rpc_tcase *tcase; @@ -225,6 +269,7 @@ test = torture_rpc_tcase_add_test(tcase, ForceReplication, test_ForceReplication); - + test = torture_rpc_tcase_add_test(tcase, InfoW, + test_InfoW); return suite; }
svn commit: samba r25815 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc
Author: gd Date: 2007-11-02 15:11:54 + (Fri, 02 Nov 2007) New Revision: 25815 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25815 Log: Small DFS idl fixes. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/dfs.idl branches/SAMBA_4_0/source/torture/rpc/dfs.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/dfs.idl === --- branches/SAMBA_4_0/source/librpc/idl/dfs.idl2007-11-02 15:09:58 UTC (rev 25814) +++ branches/SAMBA_4_0/source/librpc/idl/dfs.idl2007-11-02 15:11:54 UTC (rev 25815) @@ -52,12 +52,11 @@ [string,charset(UTF16)] uint16 *path; } dfs_Info1; - /* first 4 bits unverified yet */ typedef [public,bitmap32bit] bitmap { DFS_VOLUME_STATE_OK = 0x1, DFS_VOLUME_STATE_INCONSISTENT = 0x2, - DFS_VOLUME_STATE_OFFLINE= 0x4, - DFS_VOLUME_STATE_ONLINE = 0x8, + DFS_VOLUME_STATE_OFFLINE= 0x3, + DFS_VOLUME_STATE_ONLINE = 0x4, DFS_VOLUME_STATE_STANDALONE = DFS_VOLUME_FLAVOR_STANDALONE, DFS_VOLUME_STATE_AD_BLOB= DFS_VOLUME_FLAVOR_AD_BLOB } dfs_VolumeState; @@ -266,6 +265,16 @@ typedef struct { uint32 count; + [size_is(count)] dfs_Info5 *s; + } dfs_EnumArray5; + + typedef struct { + uint32 count; + [size_is(count)] dfs_Info6 *s; + } dfs_EnumArray6; + + typedef struct { + uint32 count; [size_is(count)] dfs_Info200 *s; } dfs_EnumArray200; @@ -280,6 +289,8 @@ [case(2)] dfs_EnumArray2 *info2; [case(3)] dfs_EnumArray3 *info3; [case(4)] dfs_EnumArray4 *info4; + [case(5)] dfs_EnumArray5 *info5; + [case(6)] dfs_EnumArray6 *info6; [case(200)] dfs_EnumArray200 *info200; [case(300)] dfs_EnumArray300 *info300; } dfs_EnumInfo; Modified: branches/SAMBA_4_0/source/torture/rpc/dfs.c === --- branches/SAMBA_4_0/source/torture/rpc/dfs.c 2007-11-02 15:09:58 UTC (rev 25814) +++ branches/SAMBA_4_0/source/torture/rpc/dfs.c 2007-11-02 15:11:54 UTC (rev 25815) @@ -335,7 +335,7 @@ static bool test_Enum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) { bool ret = true; - uint16_t levels[] = {1, 2, 3, 4, 200, 300}; + uint16_t levels[] = {1, 2, 3, 4, 5, 6, 200, 300}; int i; for (i=0;iARRAY_SIZE(levels);i++) { @@ -350,7 +350,7 @@ static bool test_EnumEx(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, const char *host) { bool ret = true; - uint16_t levels[] = {1, 2, 3, 4, 200, 300}; + uint16_t levels[] = {1, 2, 3, 4, 5, 6, 200, 300}; int i; for (i=0;iARRAY_SIZE(levels);i++) {
svn commit: samba r25814 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 15:09:58 + (Fri, 02 Nov 2007) New Revision: 25814 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25814 Log: Add my (C). Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 15:06:58 UTC (rev 25813) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 15:09:58 UTC (rev 25814) @@ -4,6 +4,7 @@ Copyright (C) Tim Potter 2003 Copyright (C) Jelmer Vernooij 2004-2007 + Copyright (C) Günther Deschner 2007 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
svn commit: samba r25813 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 15:06:58 + (Fri, 02 Nov 2007) New Revision: 25813 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25813 Log: Add unfinished SecurityDescriptorsMasks test for winreg. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:51:49 UTC (rev 25812) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 15:06:58 UTC (rev 25813) @@ -439,6 +439,40 @@ return ret; } +static bool _test_SecurityDescriptor(struct dcerpc_pipe *p, +struct torture_context *tctx, +struct policy_handle *handle, +uint32_t access_mask, +const char *key, +WERROR open_werr, +WERROR get_werr, +WERROR set_werr) +{ + struct policy_handle new_handle; + bool ret = true; + bool got_key = false; + + if (!_test_OpenKey(p, tctx, handle, key, access_mask, new_handle, + open_werr, got_key)) { + return false; + } + + if (!got_key) { + return true; + } + + if (!_test_GetSetSecurityDescriptor(p, tctx, new_handle, + get_werr, set_werr)) { + ret = false; + } + + if (!test_CloseKey(p, tctx, new_handle)) { + return false; + } + + return ret; +} + static bool test_dacl_trustee_present(struct dcerpc_pipe *p, struct torture_context *tctx, struct policy_handle *handle, @@ -946,6 +980,60 @@ return ret; } +static bool test_SecurityDescriptorsMasks(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const char *key) +{ + bool ret = true; + int i; + + struct winreg_mask_result_table { + uint32_t access_mask; + WERROR open_werr; + WERROR get_werr; + WERROR set_werr; + } sd_mask_tests[] = { + { 0, + WERR_ACCESS_DENIED, WERR_BADFILE, WERR_FOOBAR }, + { SEC_FLAG_MAXIMUM_ALLOWED, + WERR_OK, WERR_OK, WERR_OK }, + { SEC_STD_WRITE_DAC, + WERR_OK, WERR_ACCESS_DENIED, WERR_FOOBAR }, + { SEC_FLAG_SYSTEM_SECURITY, + WERR_OK, WERR_ACCESS_DENIED, WERR_FOOBAR } + }; + + /* FIXME: before this test can ever run successfully we need a way to +* correctly read a NULL security_descritpor in ndr, get the required +* length, requery, etc. +*/ + + return true; + + for (i=0; i ARRAY_SIZE(sd_mask_tests); i++) { + + torture_comment(tctx, + SecurityDescriptor get set with access_mask: 0x%08x\n, + sd_mask_tests[i].access_mask); + torture_comment(tctx, + expecting: open %s, get: %s, set: %s\n, + win_errstr(sd_mask_tests[i].open_werr), + win_errstr(sd_mask_tests[i].get_werr), + win_errstr(sd_mask_tests[i].set_werr)); + + if (_test_SecurityDescriptor(p, tctx, handle, +sd_mask_tests[i].access_mask, key, +sd_mask_tests[i].open_werr, +sd_mask_tests[i].get_werr, +sd_mask_tests[i].set_werr)) { + ret = false; + } + } + + return ret; +} + typedef bool (*secinfo_verify_fn)(struct dcerpc_pipe *, struct torture_context *, struct policy_handle *, @@ -1255,7 +1343,6 @@ { bool ret = true; - if (!test_SecurityDescriptor(p, tctx, handle, key)) { printf(test_SecurityDescriptor failed\n); ret = false; @@ -1276,6 +1363,11 @@ ret = false; } + if (!test_SecurityDescriptorsMasks(p, tctx, handle, key)) { + printf(test_SecurityDescriptorsMasks failed\n); + ret = false; + } + return ret; }
svn commit: samba r25810 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 14:43:11 + (Fri, 02 Nov 2007) New Revision: 25810 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25810 Log: Add test for blocking security descriptor inheritance in winreg. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:37:07 UTC (rev 25809) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:43:11 UTC (rev 25810) @@ -422,6 +422,58 @@ return ret; } +static bool test_dacl_trustee_present(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const struct dom_sid *sid) +{ + struct security_descriptor *sd = NULL; + int i; + + if (!test_GetKeySecurity(p, tctx, handle, sd)) { + return false; + } + + if (!sd || !sd-dacl) { + return false; + } + + for (i = 0; i sd-dacl-num_aces; i++) { + if (dom_sid_equal(sd-dacl-aces[i].trustee, sid)) { + return true; + } + } + + return false; +} + +static bool test_dacl_trustee_flags_present(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const struct dom_sid *sid, + uint8_t flags) +{ + struct security_descriptor *sd = NULL; + int i; + + if (!test_GetKeySecurity(p, tctx, handle, sd)) { + return false; + } + + if (!sd || !sd-dacl) { + return false; + } + + for (i = 0; i sd-dacl-num_aces; i++) { + if ((dom_sid_equal(sd-dacl-aces[i].trustee, sid)) + (sd-dacl-aces[i].flags == flags)) { + return true; + } + } + + return false; +} + static bool test_dacl_ace_present(struct dcerpc_pipe *p, struct torture_context *tctx, struct policy_handle *handle, @@ -585,6 +637,129 @@ return true; } +static bool test_SecurityDescriptorBlockInheritance(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const char *key) +{ + /* get sd + add ace SEC_ACE_FLAG_NO_PROPAGATE_INHERIT + set sd + add subkey/subkey + get sd + check ace + get sd from subkey + check ace + del subkey/subkey + del subkey + reset sd + */ + + struct security_descriptor *sd = NULL; + struct security_descriptor *sd_orig = NULL; + struct security_ace *ace = NULL; + struct policy_handle new_handle; + struct dom_sid *sid = NULL; + NTSTATUS status; + bool ret = true; + uint8_t ace_flags = 0x0; + + torture_comment(tctx, SecurityDescriptor inheritance block\n); + + if (!test_OpenKey(p, tctx, handle, key, new_handle)) { + return false; + } + + if (!_test_GetKeySecurity(p, tctx, new_handle, NULL, WERR_OK, sd)) { + return false; + } + + sd_orig = security_descriptor_copy(tctx, sd); + if (sd_orig == NULL) { + return false; + } + + ace = security_ace_create(tctx, + TEST_SID, + SEC_ACE_TYPE_ACCESS_ALLOWED, + SEC_STD_REQUIRED, + SEC_ACE_FLAG_CONTAINER_INHERIT | + SEC_ACE_FLAG_NO_PROPAGATE_INHERIT); + + status = security_descriptor_dacl_add(sd, ace); + if (!NT_STATUS_IS_OK(status)) { + printf(failed to add ace: %s\n, nt_errstr(status)); + return false; + } + + if (!_test_SetKeySecurity(p, tctx, new_handle, NULL, sd, WERR_OK)) { + return false; + } + + if (!test_dacl_ace_present(p, tctx, new_handle, ace)) { + printf(new ACE not present!\n); + return false; + } + + if (!test_CloseKey(p, tctx, new_handle)) { + return false; + } + + if (!test_CreateKey(p, tctx, handle, TEST_SUBSUBKEY_SD, NULL)) { + return false; + } + + if (!test_OpenKey(p, tctx, handle, TEST_SUBSUBKEY_SD, new_handle)) { + ret = false; + goto out
svn commit: samba r25812 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 14:51:49 + (Fri, 02 Nov 2007) New Revision: 25812 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25812 Log: Add test for valid and invalid security descriptor and security information flag combinations. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:50:27 UTC (rev 25811) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:51:49 UTC (rev 25812) @@ -946,6 +946,308 @@ return ret; } +typedef bool (*secinfo_verify_fn)(struct dcerpc_pipe *, + struct torture_context *, + struct policy_handle *, + const char *, + const struct dom_sid *); + +static bool test_SetSecurityDescriptor_SecInfo(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const char *key, + const char *test, + uint32_t access_mask, + uint32_t sec_info, + struct security_descriptor *sd, + WERROR set_werr, + bool expect_present, + bool (*fn) (struct dcerpc_pipe *, + struct torture_context *, + struct policy_handle *, + const char *, + const struct dom_sid *), + const struct dom_sid *sid) +{ + struct policy_handle new_handle; + bool open_success = false; + + torture_comment(tctx, SecurityDescriptor (%s) sets for secinfo: + 0x%08x, access_mask: 0x%08x\n, + test, sec_info, access_mask); + + if (!_test_OpenKey(p, tctx, handle, key, + access_mask, + new_handle, + WERR_OK, + open_success)) { + return false; + } + + if (!open_success) { + printf(key did not open\n); + test_CloseKey(p, tctx, new_handle); + return false; + } + + if (!_test_SetKeySecurity(p, tctx, new_handle, sec_info, + sd, + set_werr)) { + torture_warning(tctx, + SetKeySecurity with secinfo: 0x%08x has failed\n, + sec_info); + smb_panic(); + test_CloseKey(p, tctx, new_handle); + return false; + } + + test_CloseKey(p, tctx, new_handle); + + if (W_ERROR_IS_OK(set_werr)) { + bool present; + present = fn(p, tctx, handle, key, sid); + if ((expect_present) (!present)) { + torture_warning(tctx, + %s sid is not present!\n, + test); + return false; + } + if ((!expect_present) (present)) { + torture_warning(tctx, + %s sid is present but not expected!\n, + test); + return false; + } + } + + return true; +} + +static bool test_SecurityDescriptorsSecInfo(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const char *key) +{ + struct security_descriptor *sd_orig = NULL; + struct dom_sid *sid = NULL; + bool ret = true; + int i, a; + + struct security_descriptor *sd_owner = + security_descriptor_dacl_create(tctx, + 0, + TEST_SID, NULL, NULL); + + struct security_descriptor *sd_group = + security_descriptor_dacl_create(tctx, + 0, + NULL, TEST_SID, NULL); + + struct security_descriptor *sd_dacl
svn commit: samba r25811 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 14:50:27 + (Fri, 02 Nov 2007) New Revision: 25811 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25811 Log: Add some security descriptor helper functions. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:43:11 UTC (rev 25810) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:50:27 UTC (rev 25811) @@ -344,26 +344,43 @@ return true; } -static bool test_OpenKey(struct dcerpc_pipe *p, struct torture_context *tctx, -struct policy_handle *hive_handle, -const char *keyname, struct policy_handle *key_handle) +static bool _test_OpenKey(struct dcerpc_pipe *p, struct torture_context *tctx, + struct policy_handle *hive_handle, + const char *keyname, uint32_t access_mask, + struct policy_handle *key_handle, + WERROR open_werr, + bool *success) { struct winreg_OpenKey r; r.in.parent_handle = hive_handle; init_winreg_String(r.in.keyname, keyname); r.in.unknown = 0x; - r.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; + r.in.access_mask = access_mask; r.out.handle = key_handle; torture_assert_ntstatus_ok(tctx, dcerpc_winreg_OpenKey(p, tctx, r), OpenKey failed); - torture_assert_werr_ok(tctx, r.out.result, OpenKey failed); + torture_assert_werr_equal(tctx, r.out.result, open_werr, + OpenKey failed); + if (success W_ERROR_EQUAL(r.out.result, WERR_OK)) { + *success = true; + } + return true; } +static bool test_OpenKey(struct dcerpc_pipe *p, struct torture_context *tctx, +struct policy_handle *hive_handle, +const char *keyname, struct policy_handle *key_handle) +{ + return _test_OpenKey(p, tctx, hive_handle, keyname, +SEC_FLAG_MAXIMUM_ALLOWED, key_handle, +WERR_OK, NULL); +} + static bool test_Cleanup(struct dcerpc_pipe *p, struct torture_context *tctx, struct policy_handle *handle, const char *key) { @@ -447,6 +464,151 @@ return false; } +static bool _test_dacl_trustee_present(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const char *key, + const struct dom_sid *sid) +{ + struct policy_handle new_handle; + bool ret = true; + + if (!test_OpenKey(p, tctx, handle, key, new_handle)) { + return false; + } + + ret = test_dacl_trustee_present(p, tctx, new_handle, sid); + + test_CloseKey(p, tctx, new_handle); + + return ret; +} + +static bool test_sacl_trustee_present(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const struct dom_sid *sid) +{ + struct security_descriptor *sd = NULL; + int i; + uint32_t sec_info = SECINFO_SACL; + + if (!_test_GetKeySecurity(p, tctx, handle, sec_info, WERR_OK, sd)) { + return false; + } + + if (!sd || !sd-sacl) { + return false; + } + + for (i = 0; i sd-sacl-num_aces; i++) { + if (dom_sid_equal(sd-sacl-aces[i].trustee, sid)) { + return true; + } + } + + return false; +} + +static bool _test_sacl_trustee_present(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const char *key, + const struct dom_sid *sid) +{ + struct policy_handle new_handle; + bool ret = true; + + if (!_test_OpenKey(p, tctx, handle, key, SEC_FLAG_SYSTEM_SECURITY, + new_handle, WERR_OK, NULL)) { + return false; + } + + ret = test_sacl_trustee_present(p, tctx, new_handle, sid); + + test_CloseKey(p, tctx, new_handle); + + return ret; +} + +static bool test_owner_present(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const struct dom_sid *sid) +{ + struct security_descriptor *sd = NULL
svn commit: samba r25809 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 14:37:07 + (Fri, 02 Nov 2007) New Revision: 25809 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25809 Log: Add basic security descriptor inheritance test for winreg. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:27:58 UTC (rev 25808) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:37:07 UTC (rev 25809) @@ -32,7 +32,11 @@ #define TEST_KEY3 TEST_KEY_BASE \\with a subkey #define TEST_KEY4 TEST_KEY_BASE \\sd_tests #define TEST_SUBKEY TEST_KEY3 \\subkey +#define TEST_SUBKEY_SD TEST_KEY4 \\subkey_sd +#define TEST_SUBSUBKEY_SD TEST_KEY4 \\subkey_sd\\subsubkey_sd +#define TEST_SID S-1-5-21-1234567890-1234567890-1234567890-500 + static void init_initshutdown_String(TALLOC_CTX *mem_ctx, struct initshutdown_String *name, const char *s) @@ -302,6 +306,14 @@ return true; } +static bool test_SetKeySecurity(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + struct security_descriptor *sd) +{ + return _test_SetKeySecurity(p, tctx, handle, NULL, sd, WERR_OK); +} + static bool test_CloseKey(struct dcerpc_pipe *p, struct torture_context *tctx, struct policy_handle *handle) { @@ -410,20 +422,166 @@ return ret; } -static bool test_DeleteKey(struct dcerpc_pipe *p, struct torture_context *tctx, - struct policy_handle *handle, const char *key) +static bool test_dacl_ace_present(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const struct security_ace *ace) { + struct security_descriptor *sd = NULL; + int i; + + if (!test_GetKeySecurity(p, tctx, handle, sd)) { + return false; + } + + if (!sd || !sd-dacl) { + return false; + } + + for (i = 0; i sd-dacl-num_aces; i++) { + if (security_ace_equal(sd-dacl-aces[i], ace)) { + return true; + } + } + + return false; +} + +static bool test_RestoreSecurity(struct dcerpc_pipe *p, +struct torture_context *tctx, +struct policy_handle *handle, +const char *key, +struct security_descriptor *sd) +{ + struct policy_handle new_handle; + bool ret = true; + + if (!test_OpenKey(p, tctx, handle, key, new_handle)) { + return false; + } + + if (!test_SetKeySecurity(p, tctx, new_handle, sd)) { + ret = false; + } + + if (!test_CloseKey(p, tctx, new_handle)) { + ret = false; + } + + return ret; +} + +static bool test_SecurityDescriptorInheritance(struct dcerpc_pipe *p, + struct torture_context *tctx, + struct policy_handle *handle, + const char *key) +{ + /* get sd + add ace SEC_ACE_FLAG_CONTAINER_INHERIT + set sd + get sd + check ace + add subkey + get sd + check ace + add subsubkey + get sd + check ace + del subsubkey + del subkey + reset sd + */ + + struct security_descriptor *sd = NULL; + struct security_descriptor *sd_orig = NULL; + struct security_ace *ace = NULL; + struct policy_handle new_handle; NTSTATUS status; - struct winreg_DeleteKey r; + bool ret = true; - r.in.handle = handle; - init_winreg_String(r.in.key, key); + torture_comment(tctx, SecurityDescriptor inheritance\n); - status = dcerpc_winreg_DeleteKey(p, tctx, r); + if (!test_OpenKey(p, tctx, handle, key, new_handle)) { + return false; + } - torture_assert_ntstatus_ok(tctx, status, DeleteKey failed); - torture_assert_werr_ok(tctx, r.out.result, DeleteKey failed); + if (!_test_GetKeySecurity(p, tctx, new_handle, NULL, WERR_OK, sd)) { + return false; + } + sd_orig = security_descriptor_copy(tctx, sd); + if (sd_orig == NULL) { + return false; + } + + ace = security_ace_create(tctx, + TEST_SID, + SEC_ACE_TYPE_ACCESS_ALLOWED
svn commit: samba r25808 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-11-02 14:27:58 + (Fri, 02 Nov 2007) New Revision: 25808 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25808 Log: Move basic security descriptor test to a test_SecurityDescriptors() call. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:18:07 UTC (rev 25807) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-11-02 14:27:58 UTC (rev 25808) @@ -30,6 +30,7 @@ #define TEST_KEY1 TEST_KEY_BASE \\spottyfoot #define TEST_KEY2 TEST_KEY_BASE \\with a SD (#1) #define TEST_KEY3 TEST_KEY_BASE \\with a subkey +#define TEST_KEY4 TEST_KEY_BASE \\sd_tests #define TEST_SUBKEY TEST_KEY3 \\subkey static void init_initshutdown_String(TALLOC_CTX *mem_ctx, @@ -145,7 +146,8 @@ SID_NT_AUTHENTICATED_USERS, SEC_ACE_TYPE_ACCESS_ALLOWED, SEC_GENERIC_ALL, - SEC_ACE_FLAG_OBJECT_INHERIT, + SEC_ACE_FLAG_OBJECT_INHERIT | + SEC_ACE_FLAG_CONTAINER_INHERIT, NULL); torture_assert_ntstatus_ok(tctx, @@ -176,27 +178,37 @@ return true; } -static bool test_GetKeySecurity(struct dcerpc_pipe *p, - struct torture_context *tctx, - struct policy_handle *handle, - struct security_descriptor **sd_out) +static bool _test_GetKeySecurity(struct dcerpc_pipe *p, +struct torture_context *tctx, +struct policy_handle *handle, +uint32_t *sec_info_ptr, +WERROR get_werr, +struct security_descriptor **sd_out) { struct winreg_GetKeySecurity r; struct security_descriptor *sd = NULL; + uint32_t sec_info; DATA_BLOB sdblob; + if (sec_info_ptr) { + sec_info = *sec_info_ptr; + } else { + sec_info = SECINFO_OWNER | SECINFO_GROUP | SECINFO_DACL; + } + ZERO_STRUCT(r); r.in.handle = handle; + r.in.sec_info = sec_info; r.in.sd = r.out.sd = talloc_zero(tctx, struct KeySecurityData); r.in.sd-size = 0x1000; - r.in.sec_info = SECINFO_OWNER | SECINFO_GROUP | SECINFO_DACL; torture_assert_ntstatus_ok(tctx, dcerpc_winreg_GetKeySecurity(p, tctx, r), GetKeySecurity failed); - torture_assert_werr_ok(tctx, r.out.result, GetKeySecurity failed); + torture_assert_werr_equal(tctx, r.out.result, get_werr, + GetKeySecurity failed); sdblob.data = r.out.sd-data; sdblob.length = r.out.sd-len; @@ -221,11 +233,21 @@ return true; } -static bool test_SetKeySecurity(struct dcerpc_pipe *p, +static bool test_GetKeySecurity(struct dcerpc_pipe *p, struct torture_context *tctx, struct policy_handle *handle, - struct security_descriptor *sd) + struct security_descriptor **sd_out) { + return _test_GetKeySecurity(p, tctx, handle, NULL, WERR_OK, sd_out); +} + +static bool _test_SetKeySecurity(struct dcerpc_pipe *p, +struct torture_context *tctx, +struct policy_handle *handle, +uint32_t *sec_info_ptr, +struct security_descriptor *sd, +WERROR werr) +{ struct winreg_SetKeySecurity r; struct KeySecurityData *sdata = NULL; DATA_BLOB sdblob; @@ -233,7 +255,7 @@ ZERO_STRUCT(r); - if (p-conn-flags DCERPC_DEBUG_PRINT_OUT) { + if (sd (p-conn-flags DCERPC_DEBUG_PRINT_OUT)) { NDR_PRINT_DEBUG(security_descriptor, sd); } @@ -247,20 +269,24 @@ sdata-size = sdblob.length; sdata-len = sdblob.length; - sec_info = SECINFO_UNPROTECTED_SACL | SECINFO_UNPROTECTED_DACL; - - if (sd-owner_sid) { - sec_info |= SECINFO_OWNER; + if (sec_info_ptr) { + sec_info = *sec_info_ptr; + } else { + sec_info = SECINFO_UNPROTECTED_SACL | + SECINFO_UNPROTECTED_DACL; + if (sd-owner_sid) { + sec_info |= SECINFO_OWNER; + } + if (sd-group_sid) { + sec_info |= SECINFO_GROUP
svn commit: samba r25816 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-11-02 15:41:55 + (Fri, 02 Nov 2007) New Revision: 25816 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25816 Log: Add idl for frsapi_InfoW. Surely not correct, but a start. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-11-02 15:11:54 UTC (rev 25815) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-11-02 15:41:55 UTC (rev 25816) @@ -53,8 +53,7 @@ // /* Function 0x07 */ - - typedef enum { + typedef [v1_enum] enum { FRSAPI_INFO_VERSION = 0, FRSAPI_INFO_SETS= 1, FRSAPI_INFO_DS = 2, @@ -67,8 +66,27 @@ FRSAPI_INFO_CONFIGTABLE = 9 } frsapi_InfoEnum; - void FRSAPI_INFO_W(); + typedef struct { + uint32 length; + GUID guid; + uint32 length2; + uint32 unknown1; + frsapi_InfoEnum level; + uint32 query_counter; + uint32 unknown2; + uint32 offset; + uint32 blob_len; + /* [size_is(length-offset)] uint8 *data; */ + [subcontext_size(length-offset),subcontext(0),flag(NDR_REMAINING)] DATA_BLOB blob; + } frsapi_Info; + WERROR frsapi_InfoW( + [in] [range(0,0x1)] uint32 length, + /* [in,out] [size_is(length)] [unique] uint8 *data */ + [in,out,unique] frsapi_Info *info + + ); + // /* Function 0x08 */ typedef [v1_enum] enum {
svn commit: samba r25803 - in branches/SAMBA_4_0/source: lib/registry/tests libcli/security libnet torture/raw torture/rpc
Author: gd Date: 2007-11-02 12:54:19 + (Fri, 02 Nov 2007) New Revision: 25803 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25803 Log: Make our security descriptor acl manipulation methods more generic so that we can add and delete ACEs for SACLs as well as for DACLs. Guenther Modified: branches/SAMBA_4_0/source/lib/registry/tests/registry.c branches/SAMBA_4_0/source/libcli/security/security_descriptor.c branches/SAMBA_4_0/source/libnet/libnet_become_dc.c branches/SAMBA_4_0/source/torture/raw/acls.c branches/SAMBA_4_0/source/torture/rpc/samba3rpc.c branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Sorry, the patch is too large (608 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25803
svn commit: samba r25800 - in branches/SAMBA_4_0/source/librpc/tools: .
Author: gd Date: 2007-11-02 11:36:06 + (Fri, 02 Nov 2007) New Revision: 25800 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25800 Log: Use dump_data_skip_zeros() in ndrdump. Still obey the --dump-data parameter which enforces the full dump display (thanks metze). Guenther Modified: branches/SAMBA_4_0/source/librpc/tools/ndrdump.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/tools/ndrdump.c === --- branches/SAMBA_4_0/source/librpc/tools/ndrdump.c2007-11-02 11:33:53 UTC (rev 25799) +++ branches/SAMBA_4_0/source/librpc/tools/ndrdump.c2007-11-02 11:36:06 UTC (rev 25800) @@ -130,6 +130,15 @@ return p; } +static void ndrdump_data(uint8_t *d, uint32_t l, bool force) +{ + if (force) { + dump_data(0, d, l); + } else { + dump_data_skip_zeros(0, d, l); + } +} + int main(int argc, const char *argv[]) { const struct ndr_interface_table *p = NULL; @@ -338,12 +347,14 @@ if (ndr_pull-offset != ndr_pull-data_size) { printf(WARNING! %d unread bytes\n, ndr_pull-data_size - ndr_pull-offset); - dump_data(0, ndr_pull-data+ndr_pull-offset, ndr_pull-data_size - ndr_pull-offset); + ndrdump_data(ndr_pull-data+ndr_pull-offset, +ndr_pull-data_size - ndr_pull-offset, +dumpdata); } if (dumpdata) { printf(%d bytes consumed\n, ndr_pull-offset); - dump_data(0, blob.data, blob.length); + ndrdump_data(blob.data, blob.length, dumpdata); } ndr_print = talloc_zero(mem_ctx, struct ndr_print); @@ -377,7 +388,7 @@ if (dumpdata) { printf(%ld bytes generated (validate)\n, (long)v_blob.length); - dump_data(0, v_blob.data, v_blob.length); + ndrdump_data(v_blob.data, v_blob.length, dumpdata); } ndr_v_pull = ndr_pull_init_blob(v_blob, mem_ctx); @@ -393,7 +404,9 @@ if (ndr_v_pull-offset != ndr_v_pull-data_size) { printf(WARNING! %d unread bytes in validation\n, ndr_v_pull-data_size - ndr_v_pull-offset); - dump_data(0, ndr_v_pull-data+ndr_v_pull-offset, ndr_v_pull-data_size - ndr_v_pull-offset); + ndrdump_data(ndr_v_pull-data+ndr_v_pull-offset, +ndr_v_pull-data_size - ndr_v_pull-offset, +dumpdata); } ndr_v_print = talloc_zero(mem_ctx, struct ndr_print);
svn commit: samba r25739 - in branches/SAMBA_4_0/source/libcli/security: .
Author: gd Date: 2007-10-26 12:56:02 + (Fri, 26 Oct 2007) New Revision: 25739 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25739 Log: We forgot to copy revision and type flags in security_descriptor_copy(). Guenther Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c Changeset: Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c === --- branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-26 06:32:24 UTC (rev 25738) +++ branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-26 12:56:02 UTC (rev 25739) @@ -130,6 +130,9 @@ } } + nsd-revision = osd-revision; + nsd-type = osd-type; + return nsd; failed:
svn commit: samba r25730 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc
Author: gd Date: 2007-10-25 11:12:02 + (Thu, 25 Oct 2007) New Revision: 25730 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25730 Log: Fix IDL for incorrect winreg_SetKeySecurity. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/winreg.idl branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/winreg.idl === --- branches/SAMBA_4_0/source/librpc/idl/winreg.idl 2007-10-25 11:07:30 UTC (rev 25729) +++ branches/SAMBA_4_0/source/librpc/idl/winreg.idl 2007-10-25 11:12:02 UTC (rev 25730) @@ -273,7 +273,7 @@ /* Function: 0x15 */ WERROR winreg_SetKeySecurity( [in,ref] policy_handle *handle, - [in] winreg_AccessMask access_mask, + [in] security_secinfo sec_info, [in,ref] KeySecurityData *sd ); Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-25 11:07:30 UTC (rev 25729) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-25 11:12:02 UTC (rev 25730) @@ -228,6 +228,7 @@ struct winreg_SetKeySecurity r; struct KeySecurityData *sdata = NULL; DATA_BLOB sdblob; + uint32_t sec_info; ZERO_STRUCT(r); @@ -245,8 +246,23 @@ sdata-size = sdblob.length; sdata-len = sdblob.length; + sec_info = SECINFO_UNPROTECTED_SACL | SECINFO_UNPROTECTED_DACL; + + if (sd-owner_sid) { + sec_info |= SECINFO_OWNER; + } + if (sd-group_sid) { + sec_info |= SECINFO_GROUP; + } + if (sd-sacl) { + sec_info |= SECINFO_SACL; + } + if (sd-dacl) { + sec_info |= SECINFO_DACL; + } + r.in.handle = handle; - r.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; + r.in.sec_info = sec_info; r.in.sd = sdata; torture_assert_ntstatus_ok(tctx,
svn commit: samba r25731 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc
Author: gd Date: 2007-10-25 11:26:02 + (Thu, 25 Oct 2007) New Revision: 25731 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25731 Log: Document winreg_NotifyChangeKeyValue's notify flags. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/winreg.idl branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/winreg.idl === --- branches/SAMBA_4_0/source/librpc/idl/winreg.idl 2007-10-25 11:12:02 UTC (rev 25730) +++ branches/SAMBA_4_0/source/librpc/idl/winreg.idl 2007-10-25 11:26:02 UTC (rev 25731) @@ -19,8 +19,8 @@ KEY_QUERY_VALUE = 0x1, KEY_SET_VALUE = 0x2, KEY_CREATE_SUB_KEY = 0x4, - KEY_ENUMERATE_SUB_KEYS = 0x8, - KEY_NOTIFY = 0x00010, + KEY_ENUMERATE_SUB_KEYS = 0x8, + KEY_NOTIFY = 0x00010, KEY_CREATE_LINK = 0x00020, KEY_WOW64_64KEY = 0x00100, KEY_WOW64_32KEY = 0x00200 @@ -195,13 +195,20 @@ /**/ /* Function: 0x0e */ + typedef [public,bitmap32bit] bitmap { + REG_NOTIFY_CHANGE_NAME = 0x0001, + REG_NOTIFY_CHANGE_ATTRIBUTES= 0x0002, + REG_NOTIFY_CHANGE_LAST_SET = 0x0004, + REG_NOTIFY_CHANGE_SECURITY = 0x0008 + } winreg_NotifyChangeType; + [public] WERROR winreg_NotifyChangeKeyValue( [in,ref] policy_handle *handle, - [in] uint8 watch_subtree, - [in] uint32 notify_filter, + [in] boolean8 watch_subtree, + [in] winreg_NotifyChangeType notify_filter, [in] uint32 unknown, [in] winreg_String string1, - [in] winreg_String string2, + [in] winreg_String string2, [in] uint32 unknown2 ); Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-25 11:12:02 UTC (rev 25730) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-25 11:26:02 UTC (rev 25731) @@ -78,7 +78,7 @@ struct winreg_NotifyChangeKeyValue r; r.in.handle = handle; - r.in.watch_subtree = 1; + r.in.watch_subtree = true; r.in.notify_filter = 0; r.in.unknown = r.in.unknown2 = 0; init_winreg_String(r.in.string1, NULL); @@ -90,7 +90,8 @@ if (!W_ERROR_IS_OK(r.out.result)) { torture_comment(tctx, - NotifyChangeKeyValue failed - %s - not considering\n, win_errstr(r.out.result)); + NotifyChangeKeyValue failed - %s - not considering\n, + win_errstr(r.out.result)); return true; }
svn commit: samba r25706 - in branches/SAMBA_4_0/source/nsswitch: .
Author: gd Date: 2007-10-19 14:28:26 + (Fri, 19 Oct 2007) New Revision: 25706 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25706 Log: Merge padding fix from Samba3. Guenther Modified: branches/SAMBA_4_0/source/nsswitch/winbind_struct_protocol.h Changeset: Modified: branches/SAMBA_4_0/source/nsswitch/winbind_struct_protocol.h === --- branches/SAMBA_4_0/source/nsswitch/winbind_struct_protocol.h 2007-10-19 06:57:19 UTC (rev 25705) +++ branches/SAMBA_4_0/source/nsswitch/winbind_struct_protocol.h 2007-10-19 14:28:26 UTC (rev 25706) @@ -326,7 +326,7 @@ The size is the sizeof the union without the padding aligned on an 8 byte boundary. --jerry */ - char padding[1560]; + char padding[1800]; } data; union { SMB_TIME_T padding;
svn commit: samba r25696 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-10-18 09:44:25 + (Thu, 18 Oct 2007) New Revision: 25696 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25696 Log: Fix pipe name for dfs. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/dfs.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/dfs.idl === --- branches/SAMBA_4_0/source/librpc/idl/dfs.idl2007-10-18 08:34:19 UTC (rev 25695) +++ branches/SAMBA_4_0/source/librpc/idl/dfs.idl2007-10-18 09:44:25 UTC (rev 25696) @@ -8,7 +8,7 @@ version(3.0), pointer_default(unique), helpstring(Settings for Microsoft Distributed File System), - endpoint(ncacn_np:[\\pipe\\dfs], ncacn_ip_tcp:, ncalrpc:) + endpoint(ncacn_np:[\\pipe\\netdfs], ncacn_ip_tcp:, ncalrpc:) ] interface netdfs { /**/
svn commit: samba r25699 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc
Author: gd Date: 2007-10-18 21:23:25 + (Thu, 18 Oct 2007) New Revision: 25699 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25699 Log: Add ForceReplication test. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl branches/SAMBA_4_0/source/torture/rpc/frsapi.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-18 19:25:58 UTC (rev 25698) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-18 21:23:25 UTC (rev 25699) @@ -94,8 +94,8 @@ /* Function 0x0a */ /* not supported before w2k3 sp2 */ WERROR frsapi_ForceReplication( - [in] uint32 unknown1, - [in] uint32 unknown2, + [in,unique] GUID *guid1, + [in,unique] GUID *guid2, [in,unique] [charset(UTF16),string] uint16 *replica_set, [in,unique] [charset(UTF16),string] uint16 *partner_name ); Modified: branches/SAMBA_4_0/source/torture/rpc/frsapi.c === --- branches/SAMBA_4_0/source/torture/rpc/frsapi.c 2007-10-18 19:25:58 UTC (rev 25698) +++ branches/SAMBA_4_0/source/torture/rpc/frsapi.c 2007-10-18 21:23:25 UTC (rev 25699) @@ -24,6 +24,7 @@ #include torture/rpc/rpc.h #include librpc/gen_ndr/ndr_frsapi_c.h #include torture/util.h +#include param/param.h static bool test_GetDsPollingIntervalW(struct torture_context *tctx, struct dcerpc_pipe *p, @@ -150,16 +151,17 @@ FRSAPI_REPLICA_SET_TYPE_DOMAIN, FRSAPI_REPLICA_SET_TYPE_DFS }; int i; + bool ret = true; if (!test_IsPathReplicated_err(tctx, p, NULL, 0, WERR_FRS_INVALID_SERVICE_PARAMETER)) { - return false; + ret = false; } for (i=0; iARRAY_SIZE(lvls); i++) { if (!_test_IsPathReplicated(tctx, p, dcerpc_server_name(p), lvls[i])) { - return false; + ret = false; } } @@ -167,7 +169,7 @@ const char *path = talloc_asprintf(tctx, %s\\SYSVOL, dcerpc_server_name(p)); if (!_test_IsPathReplicated(tctx, p, path, lvls[i])) { - return false; + ret = false; } } @@ -175,10 +177,33 @@ if (!_test_IsPathReplicated(tctx, p, C:\\windows\\sysvol\\domain, lvls[i])) { - return false; + ret = false; } } + return ret; +} + +static bool test_ForceReplication(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + struct frsapi_ForceReplication r; + + ZERO_STRUCT(r); + + r.in.guid1 = NULL; + r.in.guid2 = NULL; + r.in.replica_set = talloc_asprintf(tctx, %s, + lp_realm(global_loadparm)); + r.in.partner_name = dcerpc_server_name(p); + + torture_assert_ntstatus_ok(tctx, + dcerpc_frsapi_ForceReplication(p, tctx, r), + ForceReplication failed); + + torture_assert_werr_ok(tctx, r.out.result, + ForceReplication failed); + return true; } @@ -197,5 +222,9 @@ test = torture_rpc_tcase_add_test(tcase, IsPathReplicated, test_IsPathReplicated); + test = torture_rpc_tcase_add_test(tcase, ForceReplication, + test_ForceReplication); + + return suite; }
svn commit: samba r25675 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-10-17 09:50:39 + (Wed, 17 Oct 2007) New Revision: 25675 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25675 Log: More frsapi IDL. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-17 08:26:55 UTC (rev 25674) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-17 09:50:39 UTC (rev 25675) @@ -92,6 +92,12 @@ // /* Function 0x0a */ - void FRSAPI_FORCE_REPLICATION(); + /* not supported before w2k3 sp2 */ + WERROR frsapi_ForceReplication( + [in] uint32 unknown1, + [in] uint32 unknown2, + [in,unique] [charset(UTF16),string] uint16 *replica_set, + [in,unique] [charset(UTF16),string] uint16 *partner_name + ); }
svn commit: samba r25662 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-10-16 11:12:41 + (Tue, 16 Oct 2007) New Revision: 25662 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25662 Log: While watching traces, learned the frsapi_InfoEnum enum types. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 05:26:15 UTC (rev 25661) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 11:12:41 UTC (rev 25662) @@ -37,6 +37,20 @@ // /* Function 0x07 */ + + typedef enum { + FRSAPI_INFO_VERSION = 0, + FRSAPI_INFO_SETS= 1, + FRSAPI_INFO_DS = 2, + FRSAPI_INFO_MEMORY = 3, + FRSAPI_INFO_IDTABLE = 4, + FRSAPI_INFO_OUTLOG = 5, + FRSAPI_INFO_INLOG = 6, + FRSAPI_INFO_THREADS = 7, + FRSAPI_INFO_STAGE = 8, + FRSAPI_INFO_CONFIGTABLE = 9 + } frsapi_InfoEnum; + void FRSAPI_INFO_W(); //
svn commit: samba r25663 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-10-16 11:16:35 + (Tue, 16 Oct 2007) New Revision: 25663 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25663 Log: Add frsapi_SetDsPollingIntervalW and frsapi_GetDsPollingIntervalW idl. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 11:12:41 UTC (rev 25662) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 11:16:35 UTC (rev 25663) @@ -25,11 +25,19 @@ // /* Function 0x04 */ - void FRSAPI_SET_DS_POLLING_INTERVAL_W(); + WERROR frsapi_SetDsPollingIntervalW( + [in] uint32 CurrentInterval, + [in] uint32 DsPollingLongInterval, + [in] uint32 DsPollingShortInterval + ); - // - /* Function 0x05 */ - void FRSAPI_GET_DS_POLLING_INTERVAL_W(); +// +/* Function 0x05 */ + WERROR frsapi_GetDsPollingIntervalW( + [out] uint32 CurrentInterval, + [out] uint32 DsPollingLongInterval, + [out] uint32 DsPollingShortInterval + ); // /* Function 0x06 */
svn commit: samba r25664 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-10-16 11:30:58 + (Tue, 16 Oct 2007) New Revision: 25664 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25664 Log: Use [out] pointers in frsapi idl. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 11:16:35 UTC (rev 25663) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 11:30:58 UTC (rev 25664) @@ -34,9 +34,9 @@ // /* Function 0x05 */ WERROR frsapi_GetDsPollingIntervalW( - [out] uint32 CurrentInterval, - [out] uint32 DsPollingLongInterval, - [out] uint32 DsPollingShortInterval + [out] uint32 *CurrentInterval, + [out] uint32 *DsPollingLongInterval, + [out] uint32 *DsPollingShortInterval ); //
svn commit: samba r25665 - in branches/SAMBA_4_0/source/libcli/util: .
Author: gd Date: 2007-10-16 11:39:40 + (Tue, 16 Oct 2007) New Revision: 25665 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25665 Log: Add some more WERR codes. Guenther Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c branches/SAMBA_4_0/source/libcli/util/werror.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c === --- branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-10-16 11:30:58 UTC (rev 25664) +++ branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-10-16 11:39:40 UTC (rev 25665) @@ -119,6 +119,9 @@ { WERR_SEC_E_ENCRYPT_FAILURE, WERR_SEC_E_ENCRYPT_FAILURE }, { WERR_SEC_E_DECRYPT_FAILURE, WERR_SEC_E_DECRYPT_FAILURE }, { WERR_SEC_E_ALGORITHM_MISMATCH, WERR_SEC_E_ALGORITHM_MISMATCH }, + { WERR_NOT_AUTHENTICATED, WERR_NOT_AUTHENTICATED }, + { WERR_CALL_NOT_IMPLEMENTED, WERR_CALL_NOT_IMPLEMENTED }, + { WERR_FRS_INVALID_SERVICE_PARAMETER, WERR_FRS_INVALID_SERVICE_PARAMETER }, { NULL, W_ERROR(0) } }; Modified: branches/SAMBA_4_0/source/libcli/util/werror.h === --- branches/SAMBA_4_0/source/libcli/util/werror.h 2007-10-16 11:30:58 UTC (rev 25664) +++ branches/SAMBA_4_0/source/libcli/util/werror.h 2007-10-16 11:39:40 UTC (rev 25665) @@ -79,6 +79,7 @@ #define WERR_FILE_EXISTS W_ERROR(80) #define WERR_BAD_PASSWORD W_ERROR(86) #define WERR_INVALID_PARAM W_ERROR(87) +#define WERR_CALL_NOT_IMPLEMENTED W_ERROR(120) #define WERR_INSUFFICIENT_BUFFER W_ERROR(122) #define WERR_INVALID_NAME W_ERROR(123) #define WERR_UNKNOWN_LEVEL W_ERROR(124) @@ -90,6 +91,7 @@ #define WERR_NOT_FOUND W_ERROR(1168) #define WERR_INVALID_COMPUTERNAME W_ERROR(1210) #define WERR_INVALID_DOMAINNAME W_ERROR(1212) +#define WERR_NOT_AUTHENTICATED W_ERROR(1244) #define WERR_UNKNOWN_REVISION W_ERROR(1305) #define WERR_REVISION_MISMATCH W_ERROR(1306) #define WERR_INVALID_OWNER W_ERROR(1307) @@ -176,6 +178,12 @@ #define WERR_DS_NO_MSDS_INTID W_ERROR(0x2194) #define WERR_DS_DUP_MSDS_INTID W_ERROR(0x2195) +/* FRS errors */ +#ifndef FRS_ERR_BASE +#define FRS_ERR_BASE (8000) +#endif +#define WERR_FRS_INVALID_SERVICE_PARAMETER W_ERROR(FRS_ERROR_BASE+17) + /* SEC errors */ #define WERR_SEC_E_ENCRYPT_FAILURE W_ERROR(0x80090329) #define WERR_SEC_E_DECRYPT_FAILURE W_ERROR(0x80090330)
svn commit: samba r25666 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-10-16 12:55:05 + (Tue, 16 Oct 2007) New Revision: 25666 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25666 Log: Add frsapi_IsPathReplicated IDL. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 11:39:40 UTC (rev 25665) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 12:55:05 UTC (rev 25666) @@ -1,10 +1,14 @@ -[ +#include idl_types.h + +import misc.idl; + +[ uuid(d049b186-814f-11d1-9a3c-00c04fc9b232), version(1.1), endpoint(ncacn_ip_tcp:, ncalrpc:), helpstring(File Replication API), pointer_default(unique) -] +] interface frsapi { // @@ -63,7 +67,14 @@ // /* Function 0x08 */ - void FRSAPI_IS_PATH_REPLICATED(); + WERROR frsapi_IsPathReplicated( + [in,unique] [string,charset(UTF16)] uint16 *path, + [in] uint32 unknown, + [out] uint32 *unknown1, + [out] uint32 *unknown2, + [out] uint32 *unknown3, + [out] GUID *guid + ); // /* Function 0x09 */
svn commit: samba r25667 - in branches/SAMBA_4_0/source: librpc librpc/idl torture torture/rpc
Author: gd Date: 2007-10-16 13:44:43 + (Tue, 16 Oct 2007) New Revision: 25667 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25667 Log: Start on frsapi testsuite. Guenther Added: branches/SAMBA_4_0/source/torture/rpc/frsapi.c Modified: branches/SAMBA_4_0/source/librpc/config.mk branches/SAMBA_4_0/source/librpc/idl/frsapi.idl branches/SAMBA_4_0/source/torture/config.mk branches/SAMBA_4_0/source/torture/rpc/rpc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/config.mk === --- branches/SAMBA_4_0/source/librpc/config.mk 2007-10-16 12:55:05 UTC (rev 25666) +++ branches/SAMBA_4_0/source/librpc/config.mk 2007-10-16 13:44:43 UTC (rev 25667) @@ -329,6 +329,10 @@ OBJ_FILES = gen_ndr/ndr_dfs_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_DFS +[SUBSYSTEM::RPC_NDR_FRSAPI] +OBJ_FILES = gen_ndr/ndr_frsapi_c.o +PUBLIC_DEPENDENCIES = dcerpc NDR_FRSAPI + [SUBSYSTEM::RPC_NDR_DRSUAPI] OBJ_FILES = gen_ndr/ndr_drsuapi_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_DRSUAPI Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 12:55:05 UTC (rev 25666) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 13:44:43 UTC (rev 25667) @@ -29,14 +29,18 @@ // /* Function 0x04 */ + + /* The DsPollingLongInterval and DsPollingShortInterval attributes + represent registry attributes below HKLM\System\CCS\Services\NtFrs */ + WERROR frsapi_SetDsPollingIntervalW( [in] uint32 CurrentInterval, [in] uint32 DsPollingLongInterval, [in] uint32 DsPollingShortInterval ); -// -/* Function 0x05 */ + // + /* Function 0x05 */ WERROR frsapi_GetDsPollingIntervalW( [out] uint32 *CurrentInterval, [out] uint32 *DsPollingLongInterval, Modified: branches/SAMBA_4_0/source/torture/config.mk === --- branches/SAMBA_4_0/source/torture/config.mk 2007-10-16 12:55:05 UTC (rev 25666) +++ branches/SAMBA_4_0/source/torture/config.mk 2007-10-16 13:44:43 UTC (rev 25667) @@ -159,12 +159,13 @@ rpc/samba3rpc.o \ rpc/rpc.o \ rpc/async_bind.o \ - rpc/handles.o + rpc/handles.o \ + rpc/frsapi.o PRIVATE_DEPENDENCIES = \ NDR_TABLE RPC_NDR_UNIXINFO dcerpc_samr RPC_NDR_WINREG RPC_NDR_INITSHUTDOWN \ RPC_NDR_OXIDRESOLVER RPC_NDR_EVENTLOG RPC_NDR_ECHO RPC_NDR_SVCCTL \ RPC_NDR_NETLOGON dcerpc_atsvc dcerpc_mgmt RPC_NDR_DRSUAPI \ - RPC_NDR_LSA RPC_NDR_EPMAPPER RPC_NDR_DFS RPC_NDR_SPOOLSS \ + RPC_NDR_LSA RPC_NDR_EPMAPPER RPC_NDR_DFS RPC_NDR_FRSAPI RPC_NDR_SPOOLSS \ RPC_NDR_SRVSVC RPC_NDR_WKSSVC RPC_NDR_ROT RPC_NDR_DSSETUP \ RPC_NDR_REMACT RPC_NDR_OXIDRESOLVER WB_HELPER LIBSAMBA-NET \ LIBCLI_AUTH POPT_CREDENTIALS TORTURE_LDAP TORTURE_UTIL TORTURE_RAP \ Added: branches/SAMBA_4_0/source/torture/rpc/frsapi.c === --- branches/SAMBA_4_0/source/torture/rpc/frsapi.c 2007-10-16 12:55:05 UTC (rev 25666) +++ branches/SAMBA_4_0/source/torture/rpc/frsapi.c 2007-10-16 13:44:43 UTC (rev 25667) @@ -0,0 +1,121 @@ +/* + Unix SMB/CIFS implementation. + test suite for rpc frsapi operations + + Copyright (C) Guenther Deschner 2007 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include includes.h +#include torture/torture.h +#include torture/rpc/rpc.h +#include librpc/gen_ndr/ndr_frsapi_c.h +#include torture/util.h + +static bool test_GetDsPollingIntervalW(struct torture_context *tctx, + struct dcerpc_pipe *p, + uint32_t *CurrentInterval, + uint32_t *DsPollingLongInterval, + uint32_t *DsPollingShortInterval) +{ + struct frsapi_GetDsPollingIntervalW r
svn commit: samba r25668 - in branches/SAMBA_4_0/source/libcli/util: .
Author: gd Date: 2007-10-16 13:50:40 + (Tue, 16 Oct 2007) New Revision: 25668 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25668 Log: Hopefully fix the build, sorry... Guenther Modified: branches/SAMBA_4_0/source/libcli/util/doserr.h branches/SAMBA_4_0/source/libcli/util/werror.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/util/doserr.h === --- branches/SAMBA_4_0/source/libcli/util/doserr.h 2007-10-16 13:44:43 UTC (rev 25667) +++ branches/SAMBA_4_0/source/libcli/util/doserr.h 2007-10-16 13:50:40 UTC (rev 25668) @@ -165,4 +165,8 @@ #define NERR_BASE (2100) #endif +#ifndef FRS_ERR_BASE +#define FRS_ERR_BASE (8000) +#endif + #endif /* _DOSERR_H */ Modified: branches/SAMBA_4_0/source/libcli/util/werror.h === --- branches/SAMBA_4_0/source/libcli/util/werror.h 2007-10-16 13:44:43 UTC (rev 25667) +++ branches/SAMBA_4_0/source/libcli/util/werror.h 2007-10-16 13:50:40 UTC (rev 25668) @@ -179,9 +179,6 @@ #define WERR_DS_DUP_MSDS_INTID W_ERROR(0x2195) /* FRS errors */ -#ifndef FRS_ERR_BASE -#define FRS_ERR_BASE (8000) -#endif #define WERR_FRS_INVALID_SERVICE_PARAMETER W_ERROR(FRS_ERROR_BASE+17) /* SEC errors */
svn commit: samba r25669 - in branches/SAMBA_4_0/source/libcli/util: .
Author: gd Date: 2007-10-16 14:09:49 + (Tue, 16 Oct 2007) New Revision: 25669 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25669 Log: Real build fix. Guenther Modified: branches/SAMBA_4_0/source/libcli/util/werror.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/util/werror.h === --- branches/SAMBA_4_0/source/libcli/util/werror.h 2007-10-16 13:50:40 UTC (rev 25668) +++ branches/SAMBA_4_0/source/libcli/util/werror.h 2007-10-16 14:09:49 UTC (rev 25669) @@ -179,7 +179,7 @@ #define WERR_DS_DUP_MSDS_INTID W_ERROR(0x2195) /* FRS errors */ -#define WERR_FRS_INVALID_SERVICE_PARAMETER W_ERROR(FRS_ERROR_BASE+17) +#define WERR_FRS_INVALID_SERVICE_PARAMETER W_ERROR(FRS_ERR_BASE+17) /* SEC errors */ #define WERR_SEC_E_ENCRYPT_FAILURE W_ERROR(0x80090329)
svn commit: samba r25670 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc
Author: gd Date: 2007-10-16 14:33:34 + (Tue, 16 Oct 2007) New Revision: 25670 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25670 Log: Add torture test for frsapi_IsPathReplicated(). Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl branches/SAMBA_4_0/source/torture/rpc/frsapi.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 14:09:49 UTC (rev 25669) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 14:33:34 UTC (rev 25670) @@ -71,13 +71,19 @@ // /* Function 0x08 */ + typedef [v1_enum] enum { + FRSAPI_REPLICA_SET_TYPE_0 = 0x, + FRSAPI_REPLICA_SET_TYPE_DOMAIN = 0x0002, + FRSAPI_REPLICA_SET_TYPE_DFS = 0x0003 + } frsapi_ReplicaSetType; + WERROR frsapi_IsPathReplicated( [in,unique] [string,charset(UTF16)] uint16 *path, - [in] uint32 unknown, + [in] frsapi_ReplicaSetType replica_set_type, [out] uint32 *unknown1, [out] uint32 *unknown2, [out] uint32 *unknown3, - [out] GUID *guid + [out] GUID *replica_set_guid ); // Modified: branches/SAMBA_4_0/source/torture/rpc/frsapi.c === --- branches/SAMBA_4_0/source/torture/rpc/frsapi.c 2007-10-16 14:09:49 UTC (rev 25669) +++ branches/SAMBA_4_0/source/torture/rpc/frsapi.c 2007-10-16 14:33:34 UTC (rev 25670) @@ -105,6 +105,83 @@ return true; } +static bool test_IsPathReplicated_err(struct torture_context *tctx, + struct dcerpc_pipe *p, + const char *path, + uint32_t type, + WERROR werr) +{ + struct frsapi_IsPathReplicated r; + struct GUID guid; + uint32_t unknown1, unknown2, unknown3 = 0; + + ZERO_STRUCT(r); + + r.in.path = path; + r.in.replica_set_type = type; + r.out.unknown1 = unknown1; + r.out.unknown2 = unknown2; + r.out.unknown3 = unknown3; + r.out.replica_set_guid = guid; + + torture_assert_ntstatus_ok(tctx, + dcerpc_frsapi_IsPathReplicated(p, tctx, r), + IsPathReplicated failed); + + torture_assert_werr_equal(tctx, r.out.result, werr, + GetDsPollingIntervalW failed); + + return true; +} + +static bool _test_IsPathReplicated(struct torture_context *tctx, + struct dcerpc_pipe *p, + const char *path, + uint32_t type) +{ + return test_IsPathReplicated_err(tctx, p, path, type, WERR_OK); +} + +static bool test_IsPathReplicated(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + const uint32_t lvls[] = { + FRSAPI_REPLICA_SET_TYPE_0, + FRSAPI_REPLICA_SET_TYPE_DOMAIN, + FRSAPI_REPLICA_SET_TYPE_DFS }; + int i; + + if (!test_IsPathReplicated_err(tctx, p, NULL, 0, + WERR_FRS_INVALID_SERVICE_PARAMETER)) { + return false; + } + + for (i=0; iARRAY_SIZE(lvls); i++) { + if (!_test_IsPathReplicated(tctx, p, dcerpc_server_name(p), + lvls[i])) { + return false; + } + } + + for (i=0; iARRAY_SIZE(lvls); i++) { + const char *path = talloc_asprintf(tctx, %s\\SYSVOL, + dcerpc_server_name(p)); + if (!_test_IsPathReplicated(tctx, p, path, lvls[i])) { + return false; + } + } + + for (i=0; iARRAY_SIZE(lvls); i++) { + if (!_test_IsPathReplicated(tctx, p, + C:\\windows\\sysvol\\domain, + lvls[i])) { + return false; + } + } + + return true; +} + struct torture_suite *torture_rpc_frsapi(TALLOC_CTX *mem_ctx) { struct torture_rpc_tcase *tcase; @@ -117,5 +194,8 @@ test = torture_rpc_tcase_add_test(tcase, DsPollingIntervalW, test_DsPollingIntervalW); + test = torture_rpc_tcase_add_test(tcase, IsPathReplicated, + test_IsPathReplicated); + return suite; }
svn commit: samba r25671 - in branches/SAMBA_4_0/source/librpc/idl: .
Author: gd Date: 2007-10-16 17:12:04 + (Tue, 16 Oct 2007) New Revision: 25671 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25671 Log: Add stub FRSAPI_FORCE_REPLICATION. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/frsapi.idl === --- branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 14:33:34 UTC (rev 25670) +++ branches/SAMBA_4_0/source/librpc/idl/frsapi.idl 2007-10-16 17:12:04 UTC (rev 25671) @@ -89,4 +89,9 @@ // /* Function 0x09 */ void FRSAPI_WRITER_COMMAND(); + + // + /* Function 0x0a */ + void FRSAPI_FORCE_REPLICATION(); + }
svn commit: samba r25672 - in branches/SAMBA_4_0/source/libcli/util: .
Author: gd Date: 2007-10-16 17:22:03 + (Tue, 16 Oct 2007) New Revision: 25672 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25672 Log: Some more FRS werrors. Guenther Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c branches/SAMBA_4_0/source/libcli/util/werror.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/util/doserr.c === --- branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-10-16 17:12:04 UTC (rev 25671) +++ branches/SAMBA_4_0/source/libcli/util/doserr.c 2007-10-16 17:22:03 UTC (rev 25672) @@ -122,6 +122,8 @@ { WERR_NOT_AUTHENTICATED, WERR_NOT_AUTHENTICATED }, { WERR_CALL_NOT_IMPLEMENTED, WERR_CALL_NOT_IMPLEMENTED }, { WERR_FRS_INVALID_SERVICE_PARAMETER, WERR_FRS_INVALID_SERVICE_PARAMETER }, + { WERR_FRS_SYSVOL_IS_BUSY, WERR_FRS_SYSVOL_IS_BUSY }, + { WERR_FRS_INSUFFICIENT_PRIV, WERR_FRS_INSUFFICIENT_PRIV }, { NULL, W_ERROR(0) } }; Modified: branches/SAMBA_4_0/source/libcli/util/werror.h === --- branches/SAMBA_4_0/source/libcli/util/werror.h 2007-10-16 17:12:04 UTC (rev 25671) +++ branches/SAMBA_4_0/source/libcli/util/werror.h 2007-10-16 17:22:03 UTC (rev 25672) @@ -179,6 +179,8 @@ #define WERR_DS_DUP_MSDS_INTID W_ERROR(0x2195) /* FRS errors */ +#define WERR_FRS_INSUFFICIENT_PRIV W_ERROR(FRS_ERR_BASE+7) +#define WERR_FRS_SYSVOL_IS_BUSY W_ERROR(FRS_ERR_BASE+15) #define WERR_FRS_INVALID_SERVICE_PARAMETER W_ERROR(FRS_ERR_BASE+17) /* SEC errors */
svn commit: samba r25673 - in branches/SAMBA_4_0/source: .
Author: gd Date: 2007-10-16 17:23:34 + (Tue, 16 Oct 2007) New Revision: 25673 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25673 Log: Ignore RPC-FRSAPI for samba4. Guenther Modified: branches/SAMBA_4_0/source/samba4-skip Changeset: Modified: branches/SAMBA_4_0/source/samba4-skip === --- branches/SAMBA_4_0/source/samba4-skip 2007-10-16 17:22:03 UTC (rev 25672) +++ branches/SAMBA_4_0/source/samba4-skip 2007-10-16 17:23:34 UTC (rev 25673) @@ -43,6 +43,7 @@ RPC-INITSHUTDOWN # Not provided by Samba 4 RPC-SVCCTL # Not provided by Samba 4 RPC-ATSVC # Not provided by Samba 4 +RPC-FRSAPI # Not provided by Samba 4 .*SAMBA3.* # Samba3-specific test ^NET-DOMOPEN$ # Hangs for some reason ^NET-API-BECOME-DC$# Fails
svn commit: samba r25604 - in branches/SAMBA_4_0/source/libcli/security: .
Author: gd Date: 2007-10-10 12:42:55 + (Wed, 10 Oct 2007) New Revision: 25604 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25604 Log: Add security_descriptor_append() helper function. Guenther Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c Changeset: Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c === --- branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-10 12:27:24 UTC (rev 25603) +++ branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-10 12:42:55 UTC (rev 25604) @@ -336,6 +336,48 @@ NULL); that would create a sd with one DACL ACE */ + +struct security_descriptor *security_descriptor_append(struct security_descriptor *sd, + ...) +{ + va_list ap; + const char *sidstr; + + va_start(ap, sd); + while ((sidstr = va_arg(ap, const char *))) { + struct dom_sid *sid; + struct security_ace *ace = talloc(sd, struct security_ace); + NTSTATUS status; + + if (ace == NULL) { + talloc_free(sd); + va_end(ap); + return NULL; + } + ace-type = va_arg(ap, unsigned int); + ace-access_mask = va_arg(ap, unsigned int); + ace-flags = va_arg(ap, unsigned int); + sid = dom_sid_parse_talloc(ace, sidstr); + if (sid == NULL) { + va_end(ap); + talloc_free(sd); + return NULL; + } + ace-trustee = *sid; + status = security_descriptor_dacl_add(sd, ace); + /* TODO: check: would talloc_free(ace) here be correct? */ + if (!NT_STATUS_IS_OK(status)) { + va_end(ap); + talloc_free(sd); + return NULL; + } + } + va_end(ap); + + return sd; + +} + struct security_descriptor *security_descriptor_create(TALLOC_CTX *mem_ctx, const char *owner_sid, const char *group_sid,
svn commit: samba r25605 - in branches/SAMBA_4_0/source/lib/registry/tests: .
Author: gd Date: 2007-10-10 12:44:48 + (Wed, 10 Oct 2007) New Revision: 25605 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25605 Log: Last round of registry reformats (before this gets an obsession...). Guenther Modified: branches/SAMBA_4_0/source/lib/registry/tests/diff.c branches/SAMBA_4_0/source/lib/registry/tests/generic.c branches/SAMBA_4_0/source/lib/registry/tests/hive.c branches/SAMBA_4_0/source/lib/registry/tests/registry.c Changeset: Sorry, the patch is too large (1231 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25605
svn commit: samba r25603 - in branches/SAMBA_4_0/source/lib/registry/tools: .
Author: gd Date: 2007-10-10 12:27:24 + (Wed, 10 Oct 2007) New Revision: 25603 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25603 Log: More reformat. Guenther Modified: branches/SAMBA_4_0/source/lib/registry/tools/common.c branches/SAMBA_4_0/source/lib/registry/tools/regdiff.c branches/SAMBA_4_0/source/lib/registry/tools/regpatch.c branches/SAMBA_4_0/source/lib/registry/tools/regshell.c branches/SAMBA_4_0/source/lib/registry/tools/regtree.c Changeset: Sorry, the patch is too large (742 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25603
svn commit: samba r25607 - in branches/SAMBA_4_0/source: lib/registry/tests libcli/security libnet torture/raw torture/rpc
Author: gd Date: 2007-10-10 13:12:53 + (Wed, 10 Oct 2007) New Revision: 25607 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25607 Log: Allow to set security descriptor type flags at creation time with security_descriptor_create(). Guenther Modified: branches/SAMBA_4_0/source/lib/registry/tests/registry.c branches/SAMBA_4_0/source/libcli/security/security_descriptor.c branches/SAMBA_4_0/source/libnet/libnet_become_dc.c branches/SAMBA_4_0/source/torture/raw/acls.c branches/SAMBA_4_0/source/torture/rpc/samba3rpc.c branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/lib/registry/tests/registry.c === --- branches/SAMBA_4_0/source/lib/registry/tests/registry.c 2007-10-10 12:55:07 UTC (rev 25606) +++ branches/SAMBA_4_0/source/lib/registry/tests/registry.c 2007-10-10 13:12:53 UTC (rev 25607) @@ -400,6 +400,7 @@ return false; osd = security_descriptor_create(tctx, +0, NULL, NULL, SID_NT_AUTHENTICATED_USERS, SEC_ACE_TYPE_ACCESS_ALLOWED, Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c === --- branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-10 12:55:07 UTC (rev 25606) +++ branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-10 13:12:53 UTC (rev 25607) @@ -327,6 +327,7 @@ a typical call would be: sd = security_descriptor_create(mem_ctx, +sd_type_flags, mysid, mygroup, SID_NT_AUTHENTICATED_USERS, @@ -379,6 +380,7 @@ } struct security_descriptor *security_descriptor_create(TALLOC_CTX *mem_ctx, + uint16_t sd_type, const char *owner_sid, const char *group_sid, ...) @@ -390,6 +392,8 @@ sd = security_descriptor_initialise(mem_ctx); if (sd == NULL) return NULL; + sd-type |= sd_type; + if (owner_sid) { sd-owner_sid = dom_sid_parse_talloc(sd, owner_sid); if (sd-owner_sid == NULL) { Modified: branches/SAMBA_4_0/source/libnet/libnet_become_dc.c === --- branches/SAMBA_4_0/source/libnet/libnet_become_dc.c 2007-10-10 12:55:07 UTC (rev 25606) +++ branches/SAMBA_4_0/source/libnet/libnet_become_dc.c 2007-10-10 13:12:53 UTC (rev 25607) @@ -1737,6 +1737,7 @@ if (composite_nomem(domain_admins_sid_str, c)) return; v = security_descriptor_create(vd, + 0, /* owner: domain admins */ domain_admins_sid_str, /* owner group: domain admins */ Modified: branches/SAMBA_4_0/source/torture/raw/acls.c === --- branches/SAMBA_4_0/source/torture/raw/acls.c2007-10-10 12:55:07 UTC (rev 25606) +++ branches/SAMBA_4_0/source/torture/raw/acls.c2007-10-10 13:12:53 UTC (rev 25607) @@ -298,7 +298,7 @@ printf(set a sec desc allowing no write by CREATOR_OWNER\n); sd = security_descriptor_create(tctx, - NULL, NULL, + 0, NULL, NULL, SID_CREATOR_OWNER, SEC_ACE_TYPE_ACCESS_ALLOWED, SEC_RIGHTS_FILE_READ | SEC_STD_ALL, @@ -335,7 +335,7 @@ printf(set a sec desc allowing no write by owner\n); sd = security_descriptor_create(tctx, - owner_sid, NULL, + 0, owner_sid, NULL, owner_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, SEC_RIGHTS_FILE_READ | SEC_STD_ALL, @@ -390,7 +390,7 @@ printf(set a sec desc allowing generic read by owner\n); sd = security_descriptor_create(tctx, - NULL, NULL, + 0, NULL, NULL, owner_sid, SEC_ACE_TYPE_ACCESS_ALLOWED, SEC_GENERIC_READ
svn commit: samba r25608 - in branches/SAMBA_4_0/source/libcli/security: .
Author: gd Date: 2007-10-10 13:17:28 + (Wed, 10 Oct 2007) New Revision: 25608 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25608 Log: Call security_descriptor_append from within security_descriptor_create. Guenther Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c Changeset: Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c === --- branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-10 13:12:53 UTC (rev 25607) +++ branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-10 13:17:28 UTC (rev 25608) @@ -387,7 +387,6 @@ { va_list ap; struct security_descriptor *sd; - const char *sidstr; sd = security_descriptor_initialise(mem_ctx); if (sd == NULL) return NULL; @@ -410,34 +409,7 @@ } va_start(ap, group_sid); - while ((sidstr = va_arg(ap, const char *))) { - struct dom_sid *sid; - struct security_ace *ace = talloc(sd, struct security_ace); - NTSTATUS status; - - if (ace == NULL) { - talloc_free(sd); - va_end(ap); - return NULL; - } - ace-type = va_arg(ap, unsigned int); - ace-access_mask = va_arg(ap, unsigned int); - ace-flags = va_arg(ap, unsigned int); - sid = dom_sid_parse_talloc(ace, sidstr); - if (sid == NULL) { - va_end(ap); - talloc_free(sd); - return NULL; - } - ace-trustee = *sid; - status = security_descriptor_dacl_add(sd, ace); - /* TODO: check: would talloc_free(ace) here be correct? */ - if (!NT_STATUS_IS_OK(status)) { - va_end(ap); - talloc_free(sd); - return NULL; - } - } + sd = security_descriptor_append(sd, ap); va_end(ap); return sd;
svn commit: samba r25606 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-10-10 12:55:07 + (Wed, 10 Oct 2007) New Revision: 25606 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25606 Log: Allow test_GetKeySecurity() to return a security descriptor. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-10 12:44:48 UTC (rev 25605) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-10 12:55:07 UTC (rev 25606) @@ -175,10 +175,11 @@ static bool test_GetKeySecurity(struct dcerpc_pipe *p, struct torture_context *tctx, - struct policy_handle *handle) + struct policy_handle *handle, + struct security_descriptor **sd_out) { struct winreg_GetKeySecurity r; - struct security_descriptor sd; + struct security_descriptor *sd; DATA_BLOB sdblob; ZERO_STRUCT(r); @@ -188,7 +189,8 @@ r.in.sd-size = 0x1000; r.in.sec_info = SECINFO_OWNER | SECINFO_GROUP | SECINFO_DACL; - torture_assert_ntstatus_ok(tctx, dcerpc_winreg_GetKeySecurity(p, tctx, r), + torture_assert_ntstatus_ok(tctx, + dcerpc_winreg_GetKeySecurity(p, tctx, r), GetKeySecurity failed); torture_assert_werr_ok(tctx, r.out.result, GetKeySecurity failed); @@ -197,14 +199,18 @@ sdblob.length = r.out.sd-len; torture_assert_ntstatus_ok(tctx, - ndr_pull_struct_blob(sdblob, tctx, sd, + ndr_pull_struct_blob(sdblob, tctx, sd, (ndr_pull_flags_fn_t)ndr_pull_security_descriptor), pull_security_descriptor failed); if (p-conn-flags DCERPC_DEBUG_PRINT_OUT) { - NDR_PRINT_DEBUG(security_descriptor, sd); + NDR_PRINT_DEBUG(security_descriptor, sd); } + if (sd_out) { + *sd_out = sd; + } + return true; } @@ -584,7 +590,7 @@ if (!test_NotifyChangeKeyValue(p, tctx, handle)) { } - if (!test_GetKeySecurity(p, tctx, handle)) { + if (!test_GetKeySecurity(p, tctx, handle, NULL)) { } if (!test_EnumKey(p, tctx, handle, depth)) { @@ -667,7 +673,7 @@ created2 = true; } - if (created2 !test_GetKeySecurity(p, tctx, newhandle)) { + if (created2 !test_GetKeySecurity(p, tctx, newhandle, NULL)) { printf(GetKeySecurity failed\n); ret = false; }
svn commit: samba r25609 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-10-10 13:23:06 + (Wed, 10 Oct 2007) New Revision: 25609 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25609 Log: Reformat RPC-WINREG test. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-10 13:17:28 UTC (rev 25608) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-10 13:23:06 UTC (rev 25609) @@ -129,7 +129,8 @@ static bool test_CreateKey_sd(struct dcerpc_pipe *p, struct torture_context *tctx, struct policy_handle *handle, const char *name, - const char *class, struct policy_handle *newhandle) + const char *class, + struct policy_handle *newhandle) { struct winreg_CreateKey r; enum winreg_CreateAction action_taken = 0; @@ -300,7 +301,8 @@ * return WERR_ACCESS_DENIED. */ static bool test_DeleteKeyWithSubkey(struct dcerpc_pipe *p, struct torture_context *tctx, -struct policy_handle *handle, const char *key) +struct policy_handle *handle, +const char *key) { struct winreg_DeleteKey r; @@ -381,7 +383,8 @@ if (NT_STATUS_IS_OK(status) W_ERROR_IS_OK(r.out.result)) { struct policy_handle key_handle; - torture_comment(tctx, EnumKey: %d: %s\n, r.in.enum_index, + torture_comment(tctx, EnumKey: %d: %s\n, + r.in.enum_index, r.out.name-name); if (!test_OpenKey(p, tctx, handle, r.out.name-name, @@ -496,13 +499,15 @@ r.in.size = size; do { - torture_assert_ntstatus_ok(tctx, + torture_assert_ntstatus_ok(tctx, dcerpc_winreg_EnumValue(p, tctx, r), EnumValue failed); if (W_ERROR_IS_OK(r.out.result)) { - ret = test_QueryValue(p, tctx, handle, r.out.name-name); - ret = test_QueryMultipleValues(p, tctx, handle, r.out.name-name); + ret = test_QueryValue(p, tctx, handle, + r.out.name-name); + ret = test_QueryMultipleValues(p, tctx, handle, + r.out.name-name); } r.in.enum_index++; @@ -526,7 +531,8 @@ dcerpc_winreg_AbortSystemShutdown(p, tctx, r), AbortSystemShutdown failed); - torture_assert_werr_ok(tctx, r.out.result, AbortSystemShutdown failed); + torture_assert_werr_ok(tctx, r.out.result, + AbortSystemShutdown failed); return true; } @@ -548,7 +554,8 @@ dcerpc_winreg_InitiateSystemShutdown(p, tctx, r), InitiateSystemShutdown failed); - torture_assert_werr_ok(tctx, r.out.result, InitiateSystemShutdown failed); + torture_assert_werr_ok(tctx, r.out.result, + InitiateSystemShutdown failed); return test_AbortSystemShutdown(p, tctx); } @@ -631,7 +638,8 @@ test_Cleanup(p, tctx, handle, TEST_KEY_BASE); if (!test_CreateKey(p, tctx, handle, TEST_KEY1, NULL)) { - torture_comment(tctx, CreateKey failed - not considering a failure\n); + torture_comment(tctx, + CreateKey failed - not considering a failure\n); } else { created = true; } @@ -694,29 +702,25 @@ } if (created3 - test_CreateKey(p, tctx, handle, TEST_SUBKEY, NULL)) - { + test_CreateKey(p, tctx, handle, TEST_SUBKEY, NULL)) { created_subkey = true; } if (created_subkey - !test_DeleteKeyWithSubkey(p, tctx, handle, TEST_KEY3)) - { + !test_DeleteKeyWithSubkey(p, tctx, handle, TEST_KEY3)) { printf(DeleteKeyWithSubkey failed (DeleteKey didn't return ACCESS_DENIED)\n); ret = false; } if (created_subkey - !test_DeleteKey(p, tctx, handle, TEST_SUBKEY)) - { + !test_DeleteKey(p, tctx, handle, TEST_SUBKEY)) { printf(DeleteKey failed\n); ret = false; } if (created3 - !test_DeleteKey(p, tctx, handle, TEST_KEY3
svn commit: samba r25610 - in branches/SAMBA_4_0/source/libcli/security: .
Author: gd Date: 2007-10-10 13:49:15 + (Wed, 10 Oct 2007) New Revision: 25610 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25610 Log: Add security_descriptor_appendv() which takes va_list directly. Guenther Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c Changeset: Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c === --- branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-10 13:23:06 UTC (rev 25609) +++ branches/SAMBA_4_0/source/libcli/security/security_descriptor.c 2007-10-10 13:49:15 UTC (rev 25610) @@ -338,13 +338,11 @@ that would create a sd with one DACL ACE */ -struct security_descriptor *security_descriptor_append(struct security_descriptor *sd, - ...) +struct security_descriptor *security_descriptor_appendv(struct security_descriptor *sd, + va_list ap) { - va_list ap; const char *sidstr; - va_start(ap, sd); while ((sidstr = va_arg(ap, const char *))) { struct dom_sid *sid; struct security_ace *ace = talloc(sd, struct security_ace); @@ -352,7 +350,6 @@ if (ace == NULL) { talloc_free(sd); - va_end(ap); return NULL; } ace-type = va_arg(ap, unsigned int); @@ -360,7 +357,6 @@ ace-flags = va_arg(ap, unsigned int); sid = dom_sid_parse_talloc(ace, sidstr); if (sid == NULL) { - va_end(ap); talloc_free(sd); return NULL; } @@ -368,15 +364,24 @@ status = security_descriptor_dacl_add(sd, ace); /* TODO: check: would talloc_free(ace) here be correct? */ if (!NT_STATUS_IS_OK(status)) { - va_end(ap); talloc_free(sd); return NULL; } } + + return sd; +} + +struct security_descriptor *security_descriptor_append(struct security_descriptor *sd, + ...) +{ + va_list ap; + + va_start(ap, sd); + sd = security_descriptor_appendv(sd, ap); va_end(ap); return sd; - } struct security_descriptor *security_descriptor_create(TALLOC_CTX *mem_ctx, @@ -409,7 +414,7 @@ } va_start(ap, group_sid); - sd = security_descriptor_append(sd, ap); + sd = security_descriptor_appendv(sd, ap); va_end(ap); return sd;
svn commit: samba r25611 - in branches/SAMBA_4_0/source/torture/rpc: .
Author: gd Date: 2007-10-10 13:50:21 + (Wed, 10 Oct 2007) New Revision: 25611 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=25611 Log: Smaller fix for winreg test. Guenther Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c === --- branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-10 13:49:15 UTC (rev 25610) +++ branches/SAMBA_4_0/source/torture/rpc/winreg.c 2007-10-10 13:50:21 UTC (rev 25611) @@ -181,7 +181,7 @@ struct security_descriptor **sd_out) { struct winreg_GetKeySecurity r; - struct security_descriptor *sd; + struct security_descriptor *sd = NULL; DATA_BLOB sdblob; ZERO_STRUCT(r); @@ -200,6 +200,8 @@ sdblob.data = r.out.sd-data; sdblob.length = r.out.sd-len; + sd = talloc_zero(tctx, struct security_descriptor); + torture_assert_ntstatus_ok(tctx, ndr_pull_struct_blob(sdblob, tctx, sd, (ndr_pull_flags_fn_t)ndr_pull_security_descriptor), @@ -211,6 +213,8 @@ if (sd_out) { *sd_out = sd; + } else { + talloc_free(sd); } return true;