[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-1188-g24a63ad

Andrew Bartlett abartlet at samba.org
Wed Feb 25 09:27:56 GMT 2009


The branch, master has been updated
       via  24a63add2d92afa0084fec956df7508ea28aab89 (commit)
       via  4823e988b6360646931f9b6369bf7b8f512069a8 (commit)
       via  2f1b12890a31baceee6a4d446b4782caefb1fcaa (commit)
       via  c2cdb4ad5c9398ef0d3310613107999f8d33c7ce (commit)
      from  eb5efd1978acd38cf6cc97e067b5105743ca5469 (commit)

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


- Log -----------------------------------------------------------------
commit 24a63add2d92afa0084fec956df7508ea28aab89
Merge: 4823e988b6360646931f9b6369bf7b8f512069a8 eb5efd1978acd38cf6cc97e067b5105743ca5469
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Wed Feb 25 20:27:43 2009 +1100

    Merge branch 'master' of ssh://git.samba.org/data/git/samba into master-devel

commit 4823e988b6360646931f9b6369bf7b8f512069a8
Author: Oliver Liebel <oliver at itc.li>
Date:   Wed Feb 25 20:26:27 2009 +1100

    WHATSNEW updates
    
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

commit 2f1b12890a31baceee6a4d446b4782caefb1fcaa
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Wed Feb 25 17:52:00 2009 +1100

    Credit tridge's work on fixing GnuTLS

commit c2cdb4ad5c9398ef0d3310613107999f8d33c7ce
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Wed Feb 25 17:43:07 2009 +1100

    Work around ndr_unpack failing on structures with relative pointers.
    
    This disgusting hack works around the fact that
    ndr_pull_struct_blob_all will always fail on structures with relative
    pointers.  So, map ndr_unpack to ndr_pull_struct_blob_all only if we
    don't have any relative pointers in this structure.
    
    Andrew Bartlett

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

Summary of changes:
 WHATSNEW4.txt                        |    9 +++++++--
 pidl/lib/Parse/Pidl/Samba4/Python.pm |   19 ++++++++++++++++++-
 2 files changed, 25 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/WHATSNEW4.txt b/WHATSNEW4.txt
index 2093a4e..7c637cc 100644
--- a/WHATSNEW4.txt
+++ b/WHATSNEW4.txt
@@ -69,8 +69,11 @@ In the time since Samba4 alpha6 was released in Janurary 2009, Samba has
 continued to evolve, but you may particularly notice these areas 
 (in no particular order):
 
- OpenLDAP Multi Master Replication can now also replicate the OpenLDAP
- configuration itself.
+ Multi Master Replication (MMR) configuration can now be generated 
+ for the OpenLDAP-Backend.
+
+ OpenLDAP-Online-Configuration (olc) can now be generated for the 
+ OpenLDAP-Backend. (OpenLDAP-Versions >=2.4.15 required).
 
  Support for Windows 7 beta as a member of the Samba4 domain
 
@@ -83,6 +86,8 @@ continued to evolve, but you may particularly notice these areas
  the corrected IDL back into Samba4
  
  Fixes to allow use of C++ compilers and to increase portability
+
+ Fixed TLS (SSL) support with modern versions of GnuTLS
  
 These are just some of the highlights of the work done in the past 
 month.  More details can be found in our GIT history.
diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm
index 48785f5..6099fe5 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -275,7 +275,24 @@ sub PythonStruct($$$$$$)
 		$self->pidl("if (!PyArg_ParseTuple(args, \"s#:__ndr_unpack__\", &blob.data, &blob.length))");
 		$self->pidl("\treturn NULL;");
 		$self->pidl("");
-		$self->pidl("err = ndr_pull_struct_blob_all(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_pull_flags_fn_t)ndr_pull_$name);");
+
+		# This disgusting hack works around the fact that ndr_pull_struct_blob_all will always fail on structures with relative pointers.  
+                # So, map ndr_unpack to ndr_pull_struct_blob_all only if we don't have any relative pointers in this
+		my $got_relative = 0;
+		if ($#{$d->{ELEMENTS}} > -1) {
+		        foreach my $e (@{$d->{ELEMENTS}}) {
+			        my $l = $e->{LEVELS}[0];
+				if ($l->{TYPE} eq "POINTER" and ($l->{POINTER_TYPE} eq "relative")) {
+				        $got_relative = 1;
+					last;
+				}
+			}
+		}
+		if ($got_relative == 0) {
+		        $self->pidl("err = ndr_pull_struct_blob_all(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_pull_flags_fn_t)ndr_pull_$name);");
+		} else {
+		        $self->pidl("err = ndr_pull_struct_blob(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_pull_flags_fn_t)ndr_pull_$name);");
+		}
 		$self->pidl("if (err != NDR_ERR_SUCCESS) {");
 		$self->indent;
 		$self->pidl("PyErr_SetNdrError(err);");


-- 
Samba Shared Repository


More information about the samba-cvs mailing list