[SCM] Samba Shared Repository - branch master updated - 530758dc2a6dd6dce083789b328e16e51ba6573d

Jelmer Vernooij jelmer at samba.org
Mon Dec 15 23:17:31 GMT 2008


The branch, master has been updated
       via  530758dc2a6dd6dce083789b328e16e51ba6573d (commit)
       via  2be233ebe39d6ce584848a7e6bbd68b011dd6930 (commit)
       via  1e419cd31bea64c664c36dee10fa9e843b6f76d6 (commit)
       via  573441ff9b63fed9ab0b7eaf52df337ccd5592be (commit)
       via  cd25b6245f8185e36a365dcf4c28e7df13090d3e (commit)
       via  c4fc0b49f05f56174dc904a19d9e4dfc6d3ef523 (commit)
       via  0727fbe87d0016a3b18dbdfedcd417126e1aa514 (commit)
       via  3e2c070395d2fef232ab60d075194091f7b46b35 (commit)
       via  850abaffbe057f504d47ae91ea6f3ad544d39ebe (commit)
      from  51118b1974fd91d7f60ed1a68e1eb5717690362b (commit)

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


- Log -----------------------------------------------------------------
commit 530758dc2a6dd6dce083789b328e16e51ba6573d
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Tue Dec 16 00:16:02 2008 +0100

    Add python extensions for dom_sid.

commit 2be233ebe39d6ce584848a7e6bbd68b011dd6930
Merge: 1e419cd31bea64c664c36dee10fa9e843b6f76d6 51118b1974fd91d7f60ed1a68e1eb5717690362b
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Dec 15 23:19:49 2008 +0100

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

commit 1e419cd31bea64c664c36dee10fa9e843b6f76d6
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Dec 14 19:08:22 2008 +0100

    Rename ldap.h to ldap-util.h to avoid clashing with the system ldap.h

commit 573441ff9b63fed9ab0b7eaf52df337ccd5592be
Merge: cd25b6245f8185e36a365dcf4c28e7df13090d3e daeb3a190d16a5bc05be63b2b136ebe65d6f6cf7
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Dec 14 17:17:55 2008 +0100

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

commit cd25b6245f8185e36a365dcf4c28e7df13090d3e
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Fri Dec 12 20:20:01 2008 +0100

    Move dom_sid to the Samba 3 IDL file, remove the old definition.

commit c4fc0b49f05f56174dc904a19d9e4dfc6d3ef523
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Fri Dec 12 19:52:06 2008 +0100

    Manually marshall dom_sid, so we can use a fixed size array for
    dom_sid.sub_auths rather than a dynamically allocated one.
    
    This makes it possible to use the same DCE/RPC object code for Samba 3
    and Samba 4's DCE/RPC parsers and allows copying sids more easily
    (since they no longer contain any pointers). The cost of having additional
    manual marshalling code is limited (~35 additional lines of C code).

commit 0727fbe87d0016a3b18dbdfedcd417126e1aa514
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Fri Dec 12 19:01:40 2008 +0100

    Don't allow specifying arguments to pidl object constructors, as they'll
    be ignored anyway atm.

commit 3e2c070395d2fef232ab60d075194091f7b46b35
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Fri Dec 12 13:31:42 2008 +0100

    Allow overriding repr function for pidl-defined types.

commit 850abaffbe057f504d47ae91ea6f3ad544d39ebe
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Fri Dec 12 12:40:11 2008 +0100

    Support pyhelper property to allow additional methods to be tucked onto a
    pidl-generated type.

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

Summary of changes:
 librpc/idl/security.idl                       |   28 +++
 librpc/ndr/ndr_sec_helper.c                   |  224 +++++++++++++++++++++++++
 pidl/lib/Parse/Pidl/NDR.pm                    |    1 +
 pidl/lib/Parse/Pidl/Samba4/Python.pm          |   18 ++-
 source3/include/proto.h                       |    8 -
 source3/include/smb.h                         |   13 +--
 source3/librpc/gen_ndr/lsa.h                  |    2 +-
 source3/librpc/gen_ndr/misc.h                 |    2 +-
 source3/librpc/gen_ndr/ndr_drsblobs.c         |   10 +-
 source3/librpc/gen_ndr/ndr_security.c         |   21 +--
 source3/librpc/gen_ndr/ndr_security.h         |    4 +
 source3/librpc/gen_ndr/ndr_srvsvc.c           |    8 +-
 source3/librpc/gen_ndr/ndr_srvsvc.h           |    4 +
 source3/librpc/gen_ndr/security.h             |   10 +
 source3/librpc/gen_ndr/srvsvc.h               |    4 +-
 source3/librpc/gen_ndr/winreg.h               |    2 +-
 source3/librpc/ndr/sid.c                      |  224 -------------------------
 source4/headermap.txt                         |    2 +-
 source4/libcli/security/dom_sid.c             |   17 +--
 source4/libcli/security/sddl.c                |    1 -
 source4/libcli/security/security_descriptor.c |   20 ---
 source4/librpc/config.mk                      |   13 +-
 source4/librpc/idl/dom_sid.idl                |   30 ----
 source4/librpc/ndr/ndr_dom_sid.c              |  217 ------------------------
 source4/librpc/ndr/py_security.c              |   58 +++++++
 source4/torture/unix/whoami.c                 |    5 -
 26 files changed, 373 insertions(+), 573 deletions(-)
 delete mode 100644 source4/librpc/ndr/ndr_dom_sid.c
 create mode 100644 source4/librpc/ndr/py_security.c


Changeset truncated at 500 lines:

diff --git a/librpc/idl/security.idl b/librpc/idl/security.idl
index 3f70e2c..4c6aa23 100644
--- a/librpc/idl/security.idl
+++ b/librpc/idl/security.idl
@@ -7,12 +7,39 @@
 import "misc.idl";
 import "dom_sid.idl";
 
+/*
+   use the same structure for dom_sid2 as dom_sid. A dom_sid2 is really
+   just a dom sid, but with the sub_auths represented as a conformant
+   array. As with all in-structure conformant arrays, the array length
+   is placed before the start of the structure. That's what gives rise
+   to the extra num_auths elemenent. We don't want the Samba code to
+   have to bother with such esoteric NDR details, so its easier to just
+   define it as a dom_sid and use pidl magic to make it all work. It
+   just means you need to mark a sid as a "dom_sid2" in the IDL when you
+   know it is of the conformant array variety
+*/
+cpp_quote("#define dom_sid2 dom_sid")
+
+/* same struct as dom_sid but inside a 28 bytes fixed buffer in NDR */
+cpp_quote("#define dom_sid28 dom_sid")
+
+/* same struct as dom_sid but in a variable byte buffer, which is maybe empty in NDR */
+cpp_quote("#define dom_sid0 dom_sid")
+
 [
 	helper("librpc/gen_ndr/ndr_dom_sid.h"),
+	pyhelper("librpc/ndr/py_security.c"),
 	pointer_default(unique)
 ]
 interface security
 {
+
+	typedef [public,gensize,noprint,nosize,nopull,nopush] struct {
+		uint8  sid_rev_num;             /**< SID revision number */
+		[range(0,15)] int8  num_auths;  /**< Number of sub-authorities */
+		uint8  id_auth[6];              /**< Identifier Authority */
+		uint32 sub_auths[15];
+	} dom_sid;
 	/*
 	  access masks are divided up like this:
                 0xabccdddd
@@ -388,4 +415,5 @@ interface security
 		KERB_ENCTYPE_AES128_CTS_HMAC_SHA1_96 = 0x00000008,
 		KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96 = 0x00000010
 	} kerb_EncTypes;
+
 }
diff --git a/librpc/ndr/ndr_sec_helper.c b/librpc/ndr/ndr_sec_helper.c
index 4b13550..898a428 100644
--- a/librpc/ndr/ndr_sec_helper.c
+++ b/librpc/ndr/ndr_sec_helper.c
@@ -23,6 +23,9 @@
 
 #include "includes.h"
 #include "librpc/gen_ndr/ndr_security.h"
+#if _SAMBA_BUILD_ == 4
+#include "libcli/security/security.h"
+#endif
 
 /*
   return the wire size of a security_ace
@@ -116,3 +119,224 @@ size_t ndr_size_security_descriptor(const struct security_descriptor *sd, int fl
 	return ret;
 }
 
+/*
+  return the wire size of a dom_sid
+*/
+size_t ndr_size_dom_sid(const struct dom_sid *sid, int flags)
+{
+	if (!sid) return 0;
+	return 8 + 4*sid->num_auths;
+}
+
+size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags)
+{
+	struct dom_sid zero_sid;
+
+	if (!sid) return 0;
+
+	ZERO_STRUCT(zero_sid);
+
+	if (memcmp(&zero_sid, sid, sizeof(zero_sid)) == 0) {
+		return 0;
+	}
+
+	return 8 + 4*sid->num_auths;
+}
+
+size_t ndr_size_dom_sid0(const struct dom_sid *sid, int flags)
+{
+	return ndr_size_dom_sid28(sid, flags);
+}
+
+/*
+  print a dom_sid
+*/
+void ndr_print_dom_sid(struct ndr_print *ndr, const char *name, const struct dom_sid *sid)
+{
+	ndr->print(ndr, "%-25s: %s", name, dom_sid_string(ndr, sid));
+}
+
+void ndr_print_dom_sid2(struct ndr_print *ndr, const char *name, const struct dom_sid *sid)
+{
+	ndr_print_dom_sid(ndr, name, sid);
+}
+
+void ndr_print_dom_sid28(struct ndr_print *ndr, const char *name, const struct dom_sid *sid)
+{
+	ndr_print_dom_sid(ndr, name, sid);
+}
+
+void ndr_print_dom_sid0(struct ndr_print *ndr, const char *name, const struct dom_sid *sid)
+{
+	ndr_print_dom_sid(ndr, name, sid);
+}
+
+
+/*
+  parse a dom_sid2 - this is a dom_sid but with an extra copy of the num_auths field
+*/
+enum ndr_err_code ndr_pull_dom_sid2(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid)
+{
+	uint32_t num_auths;
+	if (!(ndr_flags & NDR_SCALARS)) {
+		return NDR_ERR_SUCCESS;
+	}
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &num_auths));
+	NDR_CHECK(ndr_pull_dom_sid(ndr, ndr_flags, sid));
+	if (sid->num_auths != num_auths) {
+		return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, 
+				      "Bad array size %u should exceed %u", 
+				      num_auths, sid->num_auths);
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+/*
+  parse a dom_sid2 - this is a dom_sid but with an extra copy of the num_auths field
+*/
+enum ndr_err_code ndr_push_dom_sid2(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid)
+{
+	if (!(ndr_flags & NDR_SCALARS)) {
+		return NDR_ERR_SUCCESS;
+	}
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, sid->num_auths));
+	return ndr_push_dom_sid(ndr, ndr_flags, sid);
+}
+
+/*
+  parse a dom_sid28 - this is a dom_sid in a fixed 28 byte buffer, so we need to ensure there are only upto 5 sub_auth
+*/
+enum ndr_err_code ndr_pull_dom_sid28(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid)
+{
+	enum ndr_err_code status;
+	struct ndr_pull *subndr;
+
+	if (!(ndr_flags & NDR_SCALARS)) {
+		return NDR_ERR_SUCCESS;
+	}
+
+	subndr = talloc_zero(ndr, struct ndr_pull);
+	NDR_ERR_HAVE_NO_MEMORY(subndr);
+	subndr->flags		= ndr->flags;
+	subndr->current_mem_ctx	= ndr->current_mem_ctx;
+
+	subndr->data		= ndr->data + ndr->offset;
+	subndr->data_size	= 28;
+	subndr->offset		= 0;
+
+	NDR_CHECK(ndr_pull_advance(ndr, 28));
+
+	status = ndr_pull_dom_sid(subndr, ndr_flags, sid);
+	if (!NDR_ERR_CODE_IS_SUCCESS(status)) {
+		/* handle a w2k bug which send random data in the buffer */
+		ZERO_STRUCTP(sid);
+	} else if (sid->num_auths == 0 && sid->sub_auths) {
+		ZERO_STRUCT(sid->sub_auths);
+	}
+
+	return NDR_ERR_SUCCESS;
+}
+
+/*
+  push a dom_sid28 - this is a dom_sid in a 28 byte fixed buffer
+*/
+enum ndr_err_code ndr_push_dom_sid28(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid)
+{
+	uint32_t old_offset;
+	uint32_t padding;
+
+	if (!(ndr_flags & NDR_SCALARS)) {
+		return NDR_ERR_SUCCESS;
+	}
+
+	if (sid->num_auths > 5) {
+		return ndr_push_error(ndr, NDR_ERR_RANGE, 
+				      "dom_sid28 allows only upto 5 sub auth [%u]", 
+				      sid->num_auths);
+	}
+
+	old_offset = ndr->offset;
+	NDR_CHECK(ndr_push_dom_sid(ndr, ndr_flags, sid));
+
+	padding = 28 - (ndr->offset - old_offset);
+
+	if (padding > 0) {
+		NDR_CHECK(ndr_push_zero(ndr, padding));
+	}
+
+	return NDR_ERR_SUCCESS;
+}
+
+/*
+  parse a dom_sid0 - this is a dom_sid in a variable byte buffer, which is maybe empty
+*/
+enum ndr_err_code ndr_pull_dom_sid0(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid)
+{
+	if (!(ndr_flags & NDR_SCALARS)) {
+		return NDR_ERR_SUCCESS;
+	}
+
+	if (ndr->data_size == ndr->offset) {
+		ZERO_STRUCTP(sid);
+		return NDR_ERR_SUCCESS;
+	}
+
+	return ndr_pull_dom_sid(ndr, ndr_flags, sid);
+}
+
+/*
+  push a dom_sid0 - this is a dom_sid in a variable byte buffer, which is maybe empty
+*/
+enum ndr_err_code ndr_push_dom_sid0(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid)
+{
+	struct dom_sid zero_sid;
+
+	if (!(ndr_flags & NDR_SCALARS)) {
+		return NDR_ERR_SUCCESS;
+	}
+
+	if (!sid) {
+		return NDR_ERR_SUCCESS;
+	}
+
+	ZERO_STRUCT(zero_sid);
+
+	if (memcmp(&zero_sid, sid, sizeof(zero_sid)) == 0) {
+		return NDR_ERR_SUCCESS;
+	}
+
+	return ndr_push_dom_sid(ndr, ndr_flags, sid);
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_dom_sid(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *r)
+{
+	uint32_t cntr_sub_auths_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->sid_rev_num));
+		NDR_CHECK(ndr_push_int8(ndr, NDR_SCALARS, r->num_auths));
+		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->id_auth, 6));
+		for (cntr_sub_auths_0 = 0; cntr_sub_auths_0 < r->num_auths; cntr_sub_auths_0++) {
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sub_auths[cntr_sub_auths_0]));
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_dom_sid(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *r)
+{
+	uint32_t cntr_sub_auths_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->sid_rev_num));
+		NDR_CHECK(ndr_pull_int8(ndr, NDR_SCALARS, &r->num_auths));
+		if (r->num_auths < 0 || r->num_auths > 15) {
+			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
+		}
+		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->id_auth, 6));
+		for (cntr_sub_auths_0 = 0; cntr_sub_auths_0 < r->num_auths; cntr_sub_auths_0++) {
+			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sub_auths[cntr_sub_auths_0]));
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
diff --git a/pidl/lib/Parse/Pidl/NDR.pm b/pidl/lib/Parse/Pidl/NDR.pm
index 3daad24..5ee26d1 100644
--- a/pidl/lib/Parse/Pidl/NDR.pm
+++ b/pidl/lib/Parse/Pidl/NDR.pm
@@ -855,6 +855,7 @@ my %property_list = (
 	"endpoint"		=> ["INTERFACE"],
 	"pointer_default"	=> ["INTERFACE"],
 	"helper"		=> ["INTERFACE"],
+	"pyhelper"		=> ["INTERFACE"],
 	"authservice"		=> ["INTERFACE"],
 	"restricted"	=> ["INTERFACE"],
 
diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm
index 90dcba0..4c598b3 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -224,7 +224,10 @@ sub PythonStruct($$$$$$)
 	$self->pidl("static PyObject *py_$name\_new(PyTypeObject *self, PyObject *args, PyObject *kwargs)");
 	$self->pidl("{");
 	$self->indent;
+	$self->pidl("char *kwlist[] = {NULL};");
 	$self->pidl("$cname *ret = talloc_zero(NULL, $cname);");
+	$self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"\", kwlist))");
+	$self->pidl("\treturn NULL;");
 	$self->pidl("return py_talloc_import(&$name\_Type, ret);");
 	$self->deindent;
 	$self->pidl("}");
@@ -280,6 +283,11 @@ sub PythonStruct($$$$$$)
 		$self->indent;
 		$self->pidl("{ \"__ndr_pack__\", (PyCFunction)py_$name\_ndr_pack, METH_NOARGS, \"S.pack() -> blob\\nNDR pack\" },");
 		$self->pidl("{ \"__ndr_unpack__\", (PyCFunction)py_$name\_ndr_unpack, METH_VARARGS, \"S.unpack(blob) -> None\\nNDR unpack\" },");
+		$self->deindent;
+		$self->pidl("#ifdef ".uc("py_$name\_extra_methods"));
+		$self->pidl("\t" .uc("py_$name\_extra_methods"));
+		$self->pidl("#endif");
+		$self->indent;
 		$self->pidl("{ NULL, NULL, 0, NULL }");
 		$self->deindent;
 		$self->pidl("};");
@@ -290,6 +298,10 @@ sub PythonStruct($$$$$$)
 	$self->pidl_hdr("#define $name\_Check(op) PyObject_TypeCheck(op, &$name\_Type)\n");
 	$self->pidl_hdr("#define $name\_CheckExact(op) ((op)->ob_type == &$name\_Type)\n");
 	$self->pidl_hdr("\n");
+	$self->pidl("#ifndef ".uc("py_$name\_repr"));
+	$self->pidl("#define ".uc("py_$name\_repr") . " py_talloc_default_repr");
+	$self->pidl("#endif");
+	$self->pidl("");
 	my $docstring = ($self->DocString($d, $name) or "NULL");
 	my $typeobject = "$name\_Type";
 	$self->pidl("PyTypeObject $typeobject = {");
@@ -299,7 +311,7 @@ sub PythonStruct($$$$$$)
 	$self->pidl(".tp_basicsize = sizeof(py_talloc_Object),");
 	$self->pidl(".tp_dealloc = py_talloc_dealloc,");
 	$self->pidl(".tp_getset = $getsetters,");
-	$self->pidl(".tp_repr = py_talloc_default_repr,");
+	$self->pidl(".tp_repr = ".uc("py_$name\_repr").",");
 	$self->pidl(".tp_doc = $docstring,");
 	$self->pidl(".tp_methods = $py_methods,");
 	$self->pidl(".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,");
@@ -624,6 +636,10 @@ sub Interface($$$)
 
 	$self->pidl_hdr("\n");
 
+	if (has_property($interface, "pyhelper")) {
+		$self->pidl("#include \"".unmake_str($interface->{PROPERTIES}->{pyhelper})."\"\n");
+	}
+
 	$self->Const($_) foreach (@{$interface->{CONSTS}});
 
 	foreach my $d (@{$interface->{TYPES}}) {
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 9d86f16..24929f6 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -2322,15 +2322,7 @@ void ndr_print_dom_sid0(struct ndr_print *ndr, const char *name, const struct do
 
 /* The following definitions come from librpc/ndr/sid.c  */
 
-enum ndr_err_code ndr_push_dom_sid(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *r);
-enum ndr_err_code ndr_pull_dom_sid(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *r);
 char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid);
-enum ndr_err_code ndr_pull_dom_sid2(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
-enum ndr_err_code ndr_push_dom_sid2(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
-enum ndr_err_code ndr_pull_dom_sid28(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
-enum ndr_err_code ndr_push_dom_sid28(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
-enum ndr_err_code ndr_pull_dom_sid0(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
-enum ndr_err_code ndr_push_dom_sid0(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
 
 /* The following definitions come from librpc/rpc/binding.c  */
 
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 112b4e0..891bd4a 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -209,18 +209,7 @@ typedef uint32 codepoint_t;
  *
  * @sa http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/accctrl_38yn.asp
  **/
-typedef struct dom_sid {
-	uint8  sid_rev_num;             /**< SID revision number */
-	uint8  num_auths;               /**< Number of sub-authorities */
-	uint8  id_auth[6];              /**< Identifier Authority */
-	/*
-	 *  Pointer to sub-authorities.
-	 *
-	 * @note The values in these uint32's are in *native* byteorder, not
-	 * neccessarily little-endian...... JRA.
-	 */
-	uint32 sub_auths[MAXSUBAUTHS];  
-} DOM_SID;
+typedef struct dom_sid DOM_SID;
 
 enum id_mapping {
 	ID_UNKNOWN = 0,
diff --git a/source3/librpc/gen_ndr/lsa.h b/source3/librpc/gen_ndr/lsa.h
index 0ccbcdf..ee8a311 100644
--- a/source3/librpc/gen_ndr/lsa.h
+++ b/source3/librpc/gen_ndr/lsa.h
@@ -17,7 +17,7 @@ struct lsa_String {
 	uint16_t length;/* [value(2*strlen_m(string))] */
 	uint16_t size;/* [value(2*strlen_m(string))] */
 	const char *string;/* [unique,charset(UTF16),length_is(length/2),size_is(size/2)] */
-}/* [public,noejs] */;
+}/* [public] */;
 
 struct lsa_StringLarge {
 	uint16_t length;/* [value(2*strlen_m(string))] */
diff --git a/source3/librpc/gen_ndr/misc.h b/source3/librpc/gen_ndr/misc.h
index d1cf64e..de4abdc 100644
--- a/source3/librpc/gen_ndr/misc.h
+++ b/source3/librpc/gen_ndr/misc.h
@@ -11,7 +11,7 @@ struct GUID {
 	uint16_t time_hi_and_version;
 	uint8_t clock_seq[2];
 	uint8_t node[6];
-}/* [noprint,gensize,public,noejs] */;
+}/* [noprint,gensize,public] */;
 
 struct ndr_syntax_id {
 	struct GUID uuid;
diff --git a/source3/librpc/gen_ndr/ndr_drsblobs.c b/source3/librpc/gen_ndr/ndr_drsblobs.c
index dd8d77e..d965e40 100644
--- a/source3/librpc/gen_ndr/ndr_drsblobs.c
+++ b/source3/librpc/gen_ndr/ndr_drsblobs.c
@@ -2351,7 +2351,6 @@ static enum ndr_err_code ndr_push_AuthInfoNT4Owf(struct ndr_push *ndr, int ndr_f
 		NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->password));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->password));
 	}
 	return NDR_ERR_SUCCESS;
 }
@@ -2364,7 +2363,6 @@ static enum ndr_err_code ndr_pull_AuthInfoNT4Owf(struct ndr_pull *ndr, int ndr_f
 		NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->password));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->password));
 	}
 	return NDR_ERR_SUCCESS;
 }
@@ -2477,7 +2475,6 @@ static enum ndr_err_code ndr_push_AuthInfo(struct ndr_push *ndr, int ndr_flags,
 			break;
 
 			case TRUST_AUTH_TYPE_NT4OWF:
-				NDR_CHECK(ndr_push_AuthInfoNT4Owf(ndr, NDR_BUFFERS, &r->nt4owf));
 			break;
 
 			case TRUST_AUTH_TYPE_CLEAR:
@@ -2525,7 +2522,6 @@ static enum ndr_err_code ndr_pull_AuthInfo(struct ndr_pull *ndr, int ndr_flags,
 			break;
 
 			case TRUST_AUTH_TYPE_NT4OWF:
-				NDR_CHECK(ndr_pull_AuthInfoNT4Owf(ndr, NDR_BUFFERS, &r->nt4owf));
 			break;
 
 			case TRUST_AUTH_TYPE_CLEAR:
@@ -2584,7 +2580,6 @@ _PUBLIC_ enum ndr_err_code ndr_push_AuthenticationInformation(struct ndr_push *n
 		}
 	}
 	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_AuthInfo(ndr, NDR_BUFFERS, &r->AuthInfo));
 	}
 	return NDR_ERR_SUCCESS;
 }
@@ -2605,7 +2600,6 @@ _PUBLIC_ enum ndr_err_code ndr_pull_AuthenticationInformation(struct ndr_pull *n
 		}
 	}
 	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_AuthInfo(ndr, NDR_BUFFERS, &r->AuthInfo));
 	}
 	return NDR_ERR_SUCCESS;
 }
@@ -2641,7 +2635,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_trustCurrentPasswords(struct ndr_push *ndr,
 		for (cntr_current_0 = 0; cntr_current_0 < r->count; cntr_current_0++) {
 			if (r->current[cntr_current_0]) {
 				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->current[cntr_current_0]));
-				NDR_CHECK(ndr_push_AuthenticationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->current[cntr_current_0]));
+				NDR_CHECK(ndr_push_AuthenticationInformation(ndr, NDR_SCALARS, r->current[cntr_current_0]));
 			}
 		}
 	}
@@ -2681,7 +2675,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_trustCurrentPasswords(struct ndr_pull *ndr,
 				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->current[cntr_current_0]));
 				_mem_save_current_1 = NDR_PULL_GET_MEM_CTX(ndr);
 				NDR_PULL_SET_MEM_CTX(ndr, r->current[cntr_current_0], 0);
-				NDR_CHECK(ndr_pull_AuthenticationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->current[cntr_current_0]));
+				NDR_CHECK(ndr_pull_AuthenticationInformation(ndr, NDR_SCALARS, r->current[cntr_current_0]));
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_current_1, 0);
 				ndr->offset = _relative_save_offset;
 			}
diff --git a/source3/librpc/gen_ndr/ndr_security.c b/source3/librpc/gen_ndr/ndr_security.c


-- 
Samba Shared Repository


More information about the samba-cvs mailing list