svn commit: samba r9538 - in branches/SOC/SAMBA_4_0: . source/auth/gensec source/librpc/idl source/pidl/lib/Parse/Pidl/Samba/NDR

metze at samba.org metze at samba.org
Tue Aug 23 19:31:27 GMT 2005


Author: metze
Date: 2005-08-23 19:31:26 +0000 (Tue, 23 Aug 2005)
New Revision: 9538

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9538

Log:
 r11200 at SERNOX (orig r9519):  jelmer | 2005-08-23 15:19:33 +0200
 Use the value() value of an element when that element is used in 
 limited expressions (size_is,length_is,subcontext_size,etc)
 
 r11219 at SERNOX (orig r9526):  metze | 2005-08-23 18:13:39 +0200
 provide DCERPC auth type 16
 
 metze
 r11220 at SERNOX (orig r9527):  metze | 2005-08-23 18:19:04 +0200
 add the magic Bind GUID's, that are needed to fetch the whole
 tree with DsGeNCChanges(), this is possible as administrator
 without having a DC account joined to the domain
 
 metze

Modified:
   branches/SOC/SAMBA_4_0/
   branches/SOC/SAMBA_4_0/source/auth/gensec/gensec_gssapi.c
   branches/SOC/SAMBA_4_0/source/librpc/idl/drsuapi.idl
   branches/SOC/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba/NDR/Parser.pm


Changeset:

Property changes on: branches/SOC/SAMBA_4_0
___________________________________________________________________
Name: svk:merge
   - 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9518
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5596
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5594
   + 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9527
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5596
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5594

Modified: branches/SOC/SAMBA_4_0/source/auth/gensec/gensec_gssapi.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/auth/gensec/gensec_gssapi.c	2005-08-23 19:06:07 UTC (rev 9537)
+++ branches/SOC/SAMBA_4_0/source/auth/gensec/gensec_gssapi.c	2005-08-23 19:31:26 UTC (rev 9538)
@@ -843,6 +843,7 @@
 /* As a server, this could in theory accept any GSSAPI mech */
 static const struct gensec_security_ops gensec_gssapi_krb5_security_ops = {
 	.name		= "gssapi_krb5",
+	.auth_type	= DCERPC_AUTH_TYPE_KRB5,
 	.oid            = gensec_krb5_oids,
 	.client_start   = gensec_gssapi_client_start,
 	.server_start   = gensec_gssapi_server_start,

Modified: branches/SOC/SAMBA_4_0/source/librpc/idl/drsuapi.idl
===================================================================
--- branches/SOC/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2005-08-23 19:06:07 UTC (rev 9537)
+++ branches/SOC/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2005-08-23 19:31:26 UTC (rev 9538)
@@ -100,6 +100,11 @@
 	 * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04
 	 */
 	const string DRSUAPI_DS_BIND_GUID = "e24d201a-4fd6-11d1-a3da-0000f875ae0d";
+	/* 
+	 * this magic guid are needed to fetch the whole tree with drsuapi_DsGetNCChanges()
+	 */
+	const string DRSUAPI_DS_BIND_GUID_W2K	= "6abec3d1-3054-41c8-a362-5a0c5b7d5d71";
+	const string DRSUAPI_DS_BIND_GUID_W2K3	= "6afab99c-6e26-464a-975f-f58f105218bc";
 
 	WERROR drsuapi_DsBind(
 		[in]	    GUID *bind_guid,
@@ -444,7 +449,7 @@
 
 	typedef struct {
 		[range(0,10485760),value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(object, ndr->flags))] uint32 __ndr_size;
-		[subcontext(4)] drsuapi_DsReplicaObjectIdentifier3 *object;
+		[subcontext(4),subcontext_size(__ndr_size)] drsuapi_DsReplicaObjectIdentifier3 *object;
 	} drsuapi_DsAttributeValueDNString;
 
 	typedef struct {

Modified: branches/SOC/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba/NDR/Parser.pm
===================================================================
--- branches/SOC/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba/NDR/Parser.pm	2005-08-23 19:06:07 UTC (rev 9537)
+++ branches/SOC/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba/NDR/Parser.pm	2005-08-23 19:31:26 UTC (rev 9538)
@@ -235,6 +235,20 @@
 	return \%env;
 }
 
+sub EnvSubstituteValue($$)
+{
+	my ($env,$s) = @_;
+
+	# Substitute the value() values in the env
+	foreach my $e (@{$s->{ELEMENTS}}) {
+		next unless (my $v = has_property($e, "value"));
+		
+		$env->{$e->{NAME}} = ParseExpr($v, $env);
+	}
+
+	return $env;
+}
+
 sub GenerateFunctionInEnv($)
 {
 	my $fn = shift;
@@ -1095,6 +1109,8 @@
 
 	my $env = GenerateStructEnv($struct);
 
+	EnvSubstituteValue($env, $struct);
+
 	# save the old relative_base_offset
 	pidl "uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);" if defined($struct->{PROPERTIES}{relative_base});
 
@@ -1326,6 +1342,8 @@
 
 	my $env = GenerateStructEnv($struct);
 
+	EnvSubstituteValue($env, $struct);
+
 	foreach my $e (@{$struct->{ELEMENTS}}) {
 		DeclareArrayVariables($e);
 	}
@@ -1870,6 +1888,7 @@
 	pidl "ndr->depth++;";
 
 	my $env = GenerateFunctionInEnv($fn);
+	EnvSubstituteValue($env, $fn);
 
 	foreach my $e (@{$fn->{ELEMENTS}}) {
 		if (grep(/in/,@{$e->{DIRECTION}})) {
@@ -1925,6 +1944,8 @@
 
 	my $env = GenerateFunctionInEnv($fn);
 
+	EnvSubstituteValue($env, $fn);
+
 	foreach my $e (@{$fn->{ELEMENTS}}) {
 		if (grep(/in/,@{$e->{DIRECTION}})) {
 			ParseElementPush($e, "ndr", "r->in.", $env, 1, 1);



More information about the samba-cvs mailing list