[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-2397-g79454b5

Andrew Bartlett abartlet at samba.org
Thu Jun 18 03:52:26 GMT 2009


The branch, master has been updated
       via  79454b50fc28a60c529d76297ebf21d03959bcdb (commit)
       via  1e6fb7d7306ee64ac649afe235e452ac116de394 (commit)
       via  033e25fdcea93763e1e8fe295fb6d2c3d261bcc4 (commit)
       via  58e8db912d2213a594714ac29866396098662557 (commit)
       via  19413c52495877d54c90c60229568d0077fda30b (commit)
       via  2afc6df9b49a246129acdd7c8c24448c8cf3b6ef (commit)
       via  0ac46b00abf045c6dcd48ed9a96f948fc8416138 (commit)
       via  95345986e855c5d26a6728ba0b996ac7a104cfb8 (commit)
       via  b250c8de3930ed95c876219e13ceb1375b07d228 (commit)
       via  ef45b31886bbe34856abba718448972b62b48d3e (commit)
       via  89e979fe998095c4bbcbacd4530a045b90f0dffa (commit)
       via  e0caf399e19082b982b09f3c016044d561f7860a (commit)
       via  b112cc5503350b248949bdbcce8072f5523ce877 (commit)
       via  68fd09e24af35e1e5f87ae437abad8e0f98ac2f5 (commit)
       via  71515ba190e90e0250b9de23b7ba871c1dd44f09 (commit)
       via  efe6552f0c1b2cf7e7f95987e7c808667166a303 (commit)
       via  f666da6940c2cc0c82419ec68b1a83bddfe680c9 (commit)
      from  5eac92697ed1781e83be460d6ed7b29a154464a2 (commit)

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


- Log -----------------------------------------------------------------
commit 79454b50fc28a60c529d76297ebf21d03959bcdb
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 18 13:50:36 2009 +1000

    Bump the ldb version and the version Samba4 requires.
    
    We have made a lot of useful changes to LDB since the last realese,
    that Samba4 now relies on.  This ensures that a build against a system
    LDB will only succeed against the right version.
    
    Andrew Bartlett

commit 1e6fb7d7306ee64ac649afe235e452ac116de394
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 18 12:38:04 2009 +1000

    s4: Add tests and 'must change password' flags in setpassword and newuser
    
    In particular, ensure that we can acutally change the password under
    these circumstances.
    
    Andrew Bartlett

commit 033e25fdcea93763e1e8fe295fb6d2c3d261bcc4
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 18 12:36:00 2009 +1000

    s4:testprogs Don't specify a username/password when checking the ccache
    
    The purpose of this test is to ensure that the Kerberos credentials
    cache is valid.  If the username and password is specified, this
    overrides the very thing we are trying to test.
    
    Andrew Bartlett

commit 58e8db912d2213a594714ac29866396098662557
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 18 12:33:46 2009 +1000

    s4:libnet Allow 'net password change' to work on expired passwords
    
    We need to pass down flags to the DCE/RPC layer to allow fallback to
    anonymous connections, as we can't log in with an expired password.
    
    The anonymous connection can then change the password with SAMR.
    
    Andrew Bartlett

commit 19413c52495877d54c90c60229568d0077fda30b
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jun 18 11:08:46 2009 +1000

    s4:kdc Allow a password change when the password is expired
    
    This requires a rework on Heimdal's windc plugin layer, as we want
    full control over what tickets Heimdal will issue.  (In particular, in
    case our requirements become more complex in future).
    
    The original problem was that Heimdal's check would permit the ticket,
    but Samba would then deny it, not knowing it was for kadmin/changepw
    
    Also (in hdb-samba4) be a bit more careful on what entries we will
    make the 'change_pw' service mark that this depends on.
    
    Andrew Bartlett

commit 2afc6df9b49a246129acdd7c8c24448c8cf3b6ef
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Wed Jun 17 09:14:17 2009 +1000

    s4:setup Add an option to 'setpassword' to force password change at next login

commit 0ac46b00abf045c6dcd48ed9a96f948fc8416138
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Wed Jun 17 09:13:12 2009 +1000

    s4:gensec Print GSSAPI error message when unable to find PAC

commit 95345986e855c5d26a6728ba0b996ac7a104cfb8
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Wed Jun 17 09:08:23 2009 +1000

    Require the new tdb 1.1.5 (for performance reasons)
    
    While tdb has not changed ABI in a way that requires this, we don't
    want Samba4 somehow built against the old version with
    performance problems on large, growing databases.
    
    Andrew Bartlett

commit b250c8de3930ed95c876219e13ceb1375b07d228
Author: Matthias Dieter Wallnöfer <mwallnoefer at yahoo.de>
Date:   Mon Jun 15 17:55:43 2009 +0200

    Fixes for the "cldap" tests
    
    - Insert a check after the "tsocket" library call to make sure that the call
      terminated correctly
    - Add a comment to explain why on further calls of "cldap_socket_init" the
      destination address hasn't to be specified

commit ef45b31886bbe34856abba718448972b62b48d3e
Author: Slava Semushin <php-coder at altlinux.org>
Date:   Fri Jun 12 13:32:48 2009 +0200

    source4/client/client.c: Possible memory leaks
    
    Patch for bug #6446
    
    cppcheck found 2 possible memory leaks:
    
        [./source4/client/client.c:3305]: (error) Memory leak: base_directory
        [./source4/client/client.c:3305]: (error) Memory leak: desthost
    
    Patch in attach.

commit 89e979fe998095c4bbcbacd4530a045b90f0dffa
Author: Slava Semushin <php-coder at altlinux.org>
Date:   Fri Jun 12 13:31:13 2009 +0200

    Fix resource leak in lib/ldb/tools/ldbmodify.c
    
    Patch for bug #6389

commit e0caf399e19082b982b09f3c016044d561f7860a
Author: Slava Semushin <php-coder at altlinux.org>
Date:   Fri Jun 12 13:28:49 2009 +0200

    Fix syntax error in lib/ldb/ldb_sqlite3/base160.c
    
    Patch for bug #6388

commit b112cc5503350b248949bdbcce8072f5523ce877
Author: Eric Sandall <sandalle at sourcemage.org>
Date:   Fri Jun 12 13:24:30 2009 +0200

    For tevent to install tevent_util.h
    
    Patch for bug #6270
    
    This patch is for the future when samba4 builds using external libraries. With
    this patch, tevent now installs tevent_util.h which is required by samba4.

commit 68fd09e24af35e1e5f87ae437abad8e0f98ac2f5
Author: Eric Sandall <sandalle at sourcemage.org>
Date:   Fri Jun 12 13:03:34 2009 +0200

    LDB: Link against both tevent and talloc
    
    Patch for bug #6269
    
    When linking against tevent you also need to link against talloc. This patch
    fixes external/libevent.m4 to do so.

commit 71515ba190e90e0250b9de23b7ba871c1dd44f09
Author: Andrew Kroeger <andrew at id10ts.net>
Date:   Fri Jun 12 13:01:41 2009 +0200

    s4: Call va_end() after all va_start()/va_copy() calls.
    
    This corrects the issues reaised in bug #6129, and some others that were not
    originally identified.  It also accounts for some code that was in the original
    bug report but appears to have since been made common between S3 and S4.
    
    Thanks to Erik Hovland <erik at hovland.org> for the original bug report.

commit efe6552f0c1b2cf7e7f95987e7c808667166a303
Author: Matthias Dieter Wallnöfer <mwallnoefer at yahoo.de>
Date:   Fri Jun 12 12:38:22 2009 +0200

    NETLOGON pipe improvements
    
    Patch for bug #4939
    
    This refactors the NETLOGON code related to this bug:
    
    - Introduces a new "SYNCSTATE" enum required by the "DatabaseSync2" call (acc.
    to WSPP)
    - Make "DatabaseSync" dependant from "DatabaseSync2" (acc. to WSPP)
    - Let "DatabaseSync2" return NT_STATUS_NOT_IMPLEMENTED (I'm not sure if this is
    also true when a domain is running in mixed mode)
    - Make "LogonControl" and "LogonControl2" dependant form "LogonControl2Ex"
    (acc. to WSPP)
    - Let "LogonControl2Ex" return WERR_NOT_SUPPORTED for now

commit f666da6940c2cc0c82419ec68b1a83bddfe680c9
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Mon Jun 15 23:46:58 2009 +1000

    Add const to cast, to fix warning

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

Summary of changes:
 examples/libsmbclient/smbwrapper/smbw.c       |   14 ++-
 lib/tevent/tevent.mk                          |    1 +
 lib/torture/torture.c                         |    2 +
 libcli/auth/msrpc_parse.c                     |    4 +
 libcli/auth/smbencrypt.c                      |    4 +-
 librpc/gen_ndr/cli_netlogon.c                 |    6 +-
 librpc/gen_ndr/cli_netlogon.h                 |    4 +-
 librpc/gen_ndr/ndr_netlogon.c                 |   68 ++++++++++----
 librpc/gen_ndr/ndr_netlogon.h                 |    1 +
 librpc/gen_ndr/netlogon.h                     |   31 ++++++-
 librpc/gen_ndr/srv_netlogon.c                 |    8 +-
 librpc/idl/netlogon.idl                       |   17 +++-
 source3/lib/ldb/ldb_sqlite3/base160.c         |    2 +-
 source3/lib/ldb/tools/ldbmodify.c             |    1 +
 source4/auth/auth.h                           |    3 +-
 source4/auth/gensec/gensec_krb5.c             |    4 +-
 source4/auth/ntlm/auth_sam.c                  |    2 +-
 source4/auth/sam.c                            |   11 ++-
 source4/client/client.c                       |    7 +-
 source4/heimdal/kdc/headers.h                 |    1 +
 source4/heimdal/kdc/kdc_locl.h                |    1 -
 source4/heimdal/kdc/kerberos5.c               |   22 ++---
 source4/heimdal/kdc/krb5tgs.c                 |    8 +-
 source4/heimdal/kdc/windc.c                   |   22 ++++--
 source4/heimdal/kdc/windc_plugin.h            |    8 ++-
 source4/kdc/hdb-samba4.c                      |   13 +++-
 source4/kdc/kdc.h                             |    2 +-
 source4/kdc/pac-glue.c                        |   75 +++++++++-------
 source4/lib/ldb/configure.ac                  |    2 +-
 source4/lib/ldb/external/libevents.m4         |    2 +-
 source4/lib/ldb/external/libtdb.m4            |    2 +-
 source4/lib/ldb/ldb_sqlite3/base160.c         |    2 +-
 source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c     |    1 +
 source4/lib/ldb/tools/ldbmodify.c             |    1 +
 source4/libnet/libnet_domain.c                |    4 +
 source4/libnet/libnet_join.c                  |    2 +-
 source4/libnet/libnet_passwd.c                |    6 +-
 source4/libnet/libnet_rpc.c                   |   19 +++-
 source4/libnet/libnet_rpc.h                   |    1 +
 source4/libnet/libnet_samsync.c               |    2 +-
 source4/libnet/libnet_share.c                 |    6 ++
 source4/libnet/libnet_time.c                  |    2 +
 source4/librpc/rpc/dcerpc.h                   |    2 +
 source4/librpc/rpc/dcerpc_connect.c           |    4 +-
 source4/min_versions.m4                       |    4 +-
 source4/rpc_server/netlogon/dcerpc_netlogon.c |  110 ++++++++++++++++-------
 source4/scripting/python/samba/samdb.py       |   27 +++++-
 source4/selftest/tests.sh                     |    1 +
 source4/setup/newuser                         |    3 +-
 source4/setup/setpassword                     |    4 +-
 source4/setup/tests/blackbox_setpassword.sh   |    2 +
 source4/torture/ldap/cldap.c                  |    5 +-
 source4/torture/ldap/cldapbench.c             |   20 +++-
 source4/torture/libnet/libnet_rpc.c           |    2 +
 source4/torture/rpc/netlogon.c                |    4 +-
 testprogs/blackbox/test_kinit.sh              |    2 +-
 testprogs/blackbox/test_passwords.sh          |  121 +++++++++++++++++++++++++
 57 files changed, 532 insertions(+), 173 deletions(-)
 create mode 100755 testprogs/blackbox/test_passwords.sh


Changeset truncated at 500 lines:

diff --git a/examples/libsmbclient/smbwrapper/smbw.c b/examples/libsmbclient/smbwrapper/smbw.c
index e2e44c1..1356c78 100644
--- a/examples/libsmbclient/smbwrapper/smbw.c
+++ b/examples/libsmbclient/smbwrapper/smbw.c
@@ -55,12 +55,9 @@ smbw_ref -- manipulate reference counts
 ******************************************************/
 int smbw_ref(int client_fd, Ref_Count_Type type, ...)
 {
-        va_list ap;
-
         /* client id values begin at SMBC_BASE_FC. */
         client_fd -= SMBC_BASE_FD;
 
-        va_start(ap, type);
         switch(type)
         {
         case SMBW_RCT_Increment:
@@ -73,9 +70,16 @@ int smbw_ref(int client_fd, Ref_Count_Type type, ...)
                 return smbw_ref_count[client_fd];
 
         case SMBW_RCT_Set:
-                return (smbw_ref_count[client_fd] = va_arg(ap, int));
+		{
+			va_list ap;
+			int ret;
+
+			va_start(ap, type);
+			ret = (smbw_ref_count[client_fd] = va_arg(ap, int));
+			va_end(ap);
+			return ret;
+		}
         }
-        va_end(ap);
 
         /* never gets here */
         return -1;
diff --git a/lib/tevent/tevent.mk b/lib/tevent/tevent.mk
index 82cc4a0..903876b 100644
--- a/lib/tevent/tevent.mk
+++ b/lib/tevent/tevent.mk
@@ -23,6 +23,7 @@ installdirs::
 installheaders:: installdirs
 	cp $(srcdir)/tevent.h $(DESTDIR)$(includedir)
 	cp $(srcdir)/tevent_internal.h $(DESTDIR)$(includedir)
+	cp $(srcdir)/tevent_util.h $(DESTDIR)$(includedir)
 
 installlibs:: installdirs
 	cp tevent.pc $(DESTDIR)$(libdir)/pkgconfig
diff --git a/lib/torture/torture.c b/lib/torture/torture.c
index 17adce9..99447e7 100644
--- a/lib/torture/torture.c
+++ b/lib/torture/torture.c
@@ -107,6 +107,7 @@ void torture_comment(struct torture_context *context, const char *comment, ...)
 
 	va_start(ap, comment);
 	tmp = talloc_vasprintf(context, comment, ap);
+	va_end(ap);
 		
 	context->results->ui_ops->comment(context, tmp);
 	
@@ -126,6 +127,7 @@ void torture_warning(struct torture_context *context, const char *comment, ...)
 
 	va_start(ap, comment);
 	tmp = talloc_vasprintf(context, comment, ap);
+	va_end(ap);
 
 	context->results->ui_ops->warning(context, tmp);
 
diff --git a/libcli/auth/msrpc_parse.c b/libcli/auth/msrpc_parse.c
index 9125c1c..50e0d5c 100644
--- a/libcli/auth/msrpc_parse.c
+++ b/libcli/auth/msrpc_parse.c
@@ -71,6 +71,7 @@ bool msrpc_gen(TALLOC_CTX *mem_ctx,
 				(smb_ucs2_t **)(void *)&pointers[i].data,
 				s, &n);
 			if (!ret) {
+				va_end(ap);
 				return false;
 			}
 			pointers[i].length = n;
@@ -84,6 +85,7 @@ bool msrpc_gen(TALLOC_CTX *mem_ctx,
 				pointers, (char **)(void *)&pointers[i].data,
 				s, &n);
 			if (!ret) {
+				va_end(ap);
 				return false;
 			}
 			pointers[i].length = n;
@@ -99,6 +101,7 @@ bool msrpc_gen(TALLOC_CTX *mem_ctx,
 				(smb_ucs2_t **)(void *)&pointers[i].data,
 				s, &n);
 			if (!ret) {
+				va_end(ap);
 				return false;
 			}
 			pointers[i].length = n;
@@ -192,6 +195,7 @@ bool msrpc_gen(TALLOC_CTX *mem_ctx,
 /* a helpful macro to avoid running over the end of our blob */
 #define NEED_DATA(amount) \
 if ((head_ofs + amount) > blob->length) { \
+        va_end(ap); \
         return false; \
 }
 
diff --git a/libcli/auth/smbencrypt.c b/libcli/auth/smbencrypt.c
index 8d07b94..4aacc54 100644
--- a/libcli/auth/smbencrypt.c
+++ b/libcli/auth/smbencrypt.c
@@ -155,7 +155,7 @@ void nt_lm_owf_gen(const char *pwd, uint8_t nt_p16[16], uint8_t p16[16])
 
 #ifdef DEBUG_PASSWORD
 	DEBUG(100,("nt_lm_owf_gen: pwd, nt#\n"));
-	dump_data(120, (uint8_t *)pwd, strlen(pwd));
+	dump_data(120, (const uint8_t *)pwd, strlen(pwd));
 	dump_data(100, nt_p16, 16);
 #endif
 
@@ -163,7 +163,7 @@ void nt_lm_owf_gen(const char *pwd, uint8_t nt_p16[16], uint8_t p16[16])
 
 #ifdef DEBUG_PASSWORD
 	DEBUG(100,("nt_lm_owf_gen: pwd, lm#\n"));
-	dump_data(120, (uint8_t *)pwd, strlen(pwd));
+	dump_data(120, (const uint8_t *)pwd, strlen(pwd));
 	dump_data(100, p16, 16);
 #endif
 }
diff --git a/librpc/gen_ndr/cli_netlogon.c b/librpc/gen_ndr/cli_netlogon.c
index eb726f0..d3efab6 100644
--- a/librpc/gen_ndr/cli_netlogon.c
+++ b/librpc/gen_ndr/cli_netlogon.c
@@ -637,7 +637,7 @@ NTSTATUS rpccli_netr_LogonControl(struct rpc_pipe_client *cli,
 				  const char *logon_server /* [in] [unique,charset(UTF16)] */,
 				  enum netr_LogonControlCode function_code /* [in]  */,
 				  uint32_t level /* [in]  */,
-				  union netr_CONTROL_QUERY_INFORMATION *info /* [out] [ref,switch_is(level)] */,
+				  union netr_CONTROL_QUERY_INFORMATION *query /* [out] [ref,switch_is(level)] */,
 				  WERROR *werror)
 {
 	struct netr_LogonControl r;
@@ -671,7 +671,7 @@ NTSTATUS rpccli_netr_LogonControl(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	*info = *r.out.info;
+	*query = *r.out.query;
 
 	/* Return result */
 	if (werror) {
@@ -837,7 +837,7 @@ NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli,
 				   struct netr_Authenticator *credential /* [in] [ref] */,
 				   struct netr_Authenticator *return_authenticator /* [in,out] [ref] */,
 				   enum netr_SamDatabaseID database_id /* [in]  */,
-				   uint16_t restart_state /* [in]  */,
+				   enum SyncStateEnum restart_state /* [in]  */,
 				   uint32_t *sync_context /* [in,out] [ref] */,
 				   struct netr_DELTA_ENUM_ARRAY **delta_enum_array /* [out] [ref] */,
 				   uint32_t preferredmaximumlength /* [in]  */)
diff --git a/librpc/gen_ndr/cli_netlogon.h b/librpc/gen_ndr/cli_netlogon.h
index 718fcde..ffb877e 100644
--- a/librpc/gen_ndr/cli_netlogon.h
+++ b/librpc/gen_ndr/cli_netlogon.h
@@ -116,7 +116,7 @@ NTSTATUS rpccli_netr_LogonControl(struct rpc_pipe_client *cli,
 				  const char *logon_server /* [in] [unique,charset(UTF16)] */,
 				  enum netr_LogonControlCode function_code /* [in]  */,
 				  uint32_t level /* [in]  */,
-				  union netr_CONTROL_QUERY_INFORMATION *info /* [out] [ref,switch_is(level)] */,
+				  union netr_CONTROL_QUERY_INFORMATION *query /* [out] [ref,switch_is(level)] */,
 				  WERROR *werror);
 NTSTATUS rpccli_netr_GetAnyDCName(struct rpc_pipe_client *cli,
 				  TALLOC_CTX *mem_ctx,
@@ -148,7 +148,7 @@ NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli,
 				   struct netr_Authenticator *credential /* [in] [ref] */,
 				   struct netr_Authenticator *return_authenticator /* [in,out] [ref] */,
 				   enum netr_SamDatabaseID database_id /* [in]  */,
-				   uint16_t restart_state /* [in]  */,
+				   enum SyncStateEnum restart_state /* [in]  */,
 				   uint32_t *sync_context /* [in,out] [ref] */,
 				   struct netr_DELTA_ENUM_ARRAY **delta_enum_array /* [out] [ref] */,
 				   uint32_t preferredmaximumlength /* [in]  */);
diff --git a/librpc/gen_ndr/ndr_netlogon.c b/librpc/gen_ndr/ndr_netlogon.c
index c1bdce4..8db8c11 100644
--- a/librpc/gen_ndr/ndr_netlogon.c
+++ b/librpc/gen_ndr/ndr_netlogon.c
@@ -6500,6 +6500,38 @@ _PUBLIC_ void ndr_print_netr_NegotiateFlags(struct ndr_print *ndr, const char *n
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_SyncStateEnum(struct ndr_push *ndr, int ndr_flags, enum SyncStateEnum r)
+{
+	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_SyncStateEnum(struct ndr_pull *ndr, int ndr_flags, enum SyncStateEnum *r)
+{
+	uint16_t v;
+	NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_SyncStateEnum(struct ndr_print *ndr, const char *name, enum SyncStateEnum r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case SYNCSTATE_NORMAL_STATE: val = "SYNCSTATE_NORMAL_STATE"; break;
+		case SYNCSTATE_DOMAIN_STATE: val = "SYNCSTATE_DOMAIN_STATE"; break;
+		case SYNCSTATE_GROUP_STATE: val = "SYNCSTATE_GROUP_STATE"; break;
+		case SYNCSTATE_UAS_BUILT_IN_GROUP_STATE: val = "SYNCSTATE_UAS_BUILT_IN_GROUP_STATE"; break;
+		case SYNCSTATE_USER_STATE: val = "SYNCSTATE_USER_STATE"; break;
+		case SYNCSTATE_GROUP_MEMBER_STATE: val = "SYNCSTATE_GROUP_MEMBER_STATE"; break;
+		case SYNCSTATE_ALIAS_STATE: val = "SYNCSTATE_ALIAS_STATE"; break;
+		case SYNCSTATE_ALIAS_MEMBER_STATE: val = "SYNCSTATE_ALIAS_MEMBER_STATE"; break;
+		case SYNCSTATE_SAM_DONE_STATE: val = "SYNCSTATE_SAM_DONE_STATE"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
 static enum ndr_err_code ndr_push_netr_ChangeLogFlags(struct ndr_push *ndr, int ndr_flags, uint16_t r)
 {
 	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
@@ -11110,11 +11142,11 @@ static enum ndr_err_code ndr_push_netr_LogonControl(struct ndr_push *ndr, int fl
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 	}
 	if (flags & NDR_OUT) {
-		if (r->out.info == NULL) {
+		if (r->out.query == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
-		NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
+		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
+		NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
 		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -11124,7 +11156,7 @@ static enum ndr_err_code ndr_pull_netr_LogonControl(struct ndr_pull *ndr, int fl
 {
 	uint32_t _ptr_logon_server;
 	TALLOC_CTX *_mem_save_logon_server_0;
-	TALLOC_CTX *_mem_save_info_0;
+	TALLOC_CTX *_mem_save_query_0;
 	if (flags & NDR_IN) {
 		ZERO_STRUCT(r->out);
 
@@ -11148,18 +11180,18 @@ static enum ndr_err_code ndr_pull_netr_LogonControl(struct ndr_pull *ndr, int fl
 		}
 		NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
-		NDR_PULL_ALLOC(ndr, r->out.info);
-		ZERO_STRUCTP(r->out.info);
+		NDR_PULL_ALLOC(ndr, r->out.query);
+		ZERO_STRUCTP(r->out.query);
 	}
 	if (flags & NDR_OUT) {
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.info);
+			NDR_PULL_ALLOC(ndr, r->out.query);
 		}
-		_mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
-		NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
+		_mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
+		NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -11188,10 +11220,10 @@ _PUBLIC_ void ndr_print_netr_LogonControl(struct ndr_print *ndr, const char *nam
 	if (flags & NDR_OUT) {
 		ndr_print_struct(ndr, "out", "netr_LogonControl");
 		ndr->depth++;
-		ndr_print_ptr(ndr, "info", r->out.info);
+		ndr_print_ptr(ndr, "query", r->out.query);
 		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
-		ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "info", r->out.info);
+		ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
+		ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
 		ndr->depth--;
 		ndr_print_WERROR(ndr, "result", r->out.result);
 		ndr->depth--;
@@ -11668,7 +11700,7 @@ static enum ndr_err_code ndr_push_netr_DatabaseSync2(struct ndr_push *ndr, int f
 		}
 		NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
 		NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.restart_state));
+		NDR_CHECK(ndr_push_SyncStateEnum(ndr, NDR_SCALARS, r->in.restart_state));
 		if (r->in.sync_context == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
@@ -11736,7 +11768,7 @@ static enum ndr_err_code ndr_pull_netr_DatabaseSync2(struct ndr_pull *ndr, int f
 		NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.restart_state));
+		NDR_CHECK(ndr_pull_SyncStateEnum(ndr, NDR_SCALARS, &r->in.restart_state));
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->in.sync_context);
 		}
@@ -11811,7 +11843,7 @@ _PUBLIC_ void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *na
 		ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
 		ndr->depth--;
 		ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
-		ndr_print_uint16(ndr, "restart_state", r->in.restart_state);
+		ndr_print_SyncStateEnum(ndr, "restart_state", r->in.restart_state);
 		ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
 		ndr->depth++;
 		ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
diff --git a/librpc/gen_ndr/ndr_netlogon.h b/librpc/gen_ndr/ndr_netlogon.h
index e057551..2dfc0ed 100644
--- a/librpc/gen_ndr/ndr_netlogon.h
+++ b/librpc/gen_ndr/ndr_netlogon.h
@@ -192,6 +192,7 @@ void ndr_print_netr_CONTROL_QUERY_INFORMATION(struct ndr_print *ndr, const char
 void ndr_print_netr_LogonControlCode(struct ndr_print *ndr, const char *name, enum netr_LogonControlCode r);
 void ndr_print_netr_CONTROL_DATA_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_DATA_INFORMATION *r);
 void ndr_print_netr_NegotiateFlags(struct ndr_print *ndr, const char *name, uint32_t r);
+void ndr_print_SyncStateEnum(struct ndr_print *ndr, const char *name, enum SyncStateEnum r);
 void ndr_print_netr_ChangeLogFlags(struct ndr_print *ndr, const char *name, uint16_t r);
 void ndr_print_netr_ChangeLogObject(struct ndr_print *ndr, const char *name, const union netr_ChangeLogObject *r);
 enum ndr_err_code ndr_push_netr_ChangeLogEntry(struct ndr_push *ndr, int ndr_flags, const struct netr_ChangeLogEntry *r);
diff --git a/librpc/gen_ndr/netlogon.h b/librpc/gen_ndr/netlogon.h
index 892e770..7010e80 100644
--- a/librpc/gen_ndr/netlogon.h
+++ b/librpc/gen_ndr/netlogon.h
@@ -744,6 +744,33 @@ union netr_CONTROL_DATA_INFORMATION {
 #define NETLOGON_NEG_AUTHENTICATED_RPC_LSASS ( 0x20000000 )
 #define NETLOGON_NEG_AUTHENTICATED_RPC ( 0x40000000 )
 
+enum SyncStateEnum
+#ifndef USE_UINT_ENUMS
+ {
+	SYNCSTATE_NORMAL_STATE=0,
+	SYNCSTATE_DOMAIN_STATE=1,
+	SYNCSTATE_GROUP_STATE=2,
+	SYNCSTATE_UAS_BUILT_IN_GROUP_STATE=3,
+	SYNCSTATE_USER_STATE=4,
+	SYNCSTATE_GROUP_MEMBER_STATE=5,
+	SYNCSTATE_ALIAS_STATE=6,
+	SYNCSTATE_ALIAS_MEMBER_STATE=7,
+	SYNCSTATE_SAM_DONE_STATE=8
+}
+#else
+ { __donnot_use_enum_SyncStateEnum=0x7FFFFFFF}
+#define SYNCSTATE_NORMAL_STATE ( 0 )
+#define SYNCSTATE_DOMAIN_STATE ( 1 )
+#define SYNCSTATE_GROUP_STATE ( 2 )
+#define SYNCSTATE_UAS_BUILT_IN_GROUP_STATE ( 3 )
+#define SYNCSTATE_USER_STATE ( 4 )
+#define SYNCSTATE_GROUP_MEMBER_STATE ( 5 )
+#define SYNCSTATE_ALIAS_STATE ( 6 )
+#define SYNCSTATE_ALIAS_MEMBER_STATE ( 7 )
+#define SYNCSTATE_SAM_DONE_STATE ( 8 )
+#endif
+;
+
 /* bitmap netr_ChangeLogFlags */
 #define NETR_CHANGELOG_IMMEDIATE_REPL_REQUIRED ( 0x0001 )
 #define NETR_CHANGELOG_CHANGED_PASSWORD ( 0x0002 )
@@ -1228,7 +1255,7 @@ struct netr_LogonControl {
 	} in;
 
 	struct {
-		union netr_CONTROL_QUERY_INFORMATION *info;/* [ref,switch_is(level)] */
+		union netr_CONTROL_QUERY_INFORMATION *query;/* [ref,switch_is(level)] */
 		WERROR result;
 	} out;
 
@@ -1290,7 +1317,7 @@ struct netr_DatabaseSync2 {
 		const char *computername;/* [charset(UTF16)] */
 		struct netr_Authenticator *credential;/* [ref] */
 		enum netr_SamDatabaseID database_id;
-		uint16_t restart_state;
+		enum SyncStateEnum restart_state;
 		uint32_t preferredmaximumlength;
 		struct netr_Authenticator *return_authenticator;/* [ref] */
 		uint32_t *sync_context;/* [ref] */
diff --git a/librpc/gen_ndr/srv_netlogon.c b/librpc/gen_ndr/srv_netlogon.c
index 4515ca0..be92d4a 100644
--- a/librpc/gen_ndr/srv_netlogon.c
+++ b/librpc/gen_ndr/srv_netlogon.c
@@ -1050,8 +1050,8 @@ static bool api_netr_LogonControl(pipes_struct *p)
 	}
 
 	ZERO_STRUCT(r->out);
-	r->out.info = talloc_zero(r, union netr_CONTROL_QUERY_INFORMATION);
-	if (r->out.info == NULL) {
+	r->out.query = talloc_zero(r, union netr_CONTROL_QUERY_INFORMATION);
+	if (r->out.query == NULL) {
 		talloc_free(r);
 		return false;
 	}
@@ -4092,8 +4092,8 @@ NTSTATUS rpc_netlogon_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 		case NDR_NETR_LOGONCONTROL: {
 			struct netr_LogonControl *r = (struct netr_LogonControl *)_r;
 			ZERO_STRUCT(r->out);
-			r->out.info = talloc_zero(mem_ctx, union netr_CONTROL_QUERY_INFORMATION);
-			if (r->out.info == NULL) {
+			r->out.query = talloc_zero(mem_ctx, union netr_CONTROL_QUERY_INFORMATION);
+			if (r->out.query == NULL) {
 			return NT_STATUS_NO_MEMORY;
 			}
 
diff --git a/librpc/idl/netlogon.idl b/librpc/idl/netlogon.idl
index 65f62da..4a90c2c 100644
--- a/librpc/idl/netlogon.idl
+++ b/librpc/idl/netlogon.idl
@@ -728,7 +728,6 @@ interface netlogon
 		[size_is(num_deltas)] netr_DELTA_ENUM *delta_enum;
 	} netr_DELTA_ENUM_ARRAY;
 
-
 	NTSTATUS netr_DatabaseDeltas(
 		[in]      [string,charset(UTF16)] uint16 logon_server[],
 		[in]      [string,charset(UTF16)] uint16 computername[],
@@ -882,7 +881,7 @@ interface netlogon
 		[in,unique] [string,charset(UTF16)] uint16 *logon_server,
 		[in]   netr_LogonControlCode function_code,
 		[in]   uint32 level,
-		[out,ref,switch_is(level)]  netr_CONTROL_QUERY_INFORMATION *info
+		[out,ref,switch_is(level)]  netr_CONTROL_QUERY_INFORMATION *query
 		);
 
 
@@ -970,13 +969,25 @@ interface netlogon
 	/*****************/
 	/* Function 0x10 */
 
+	typedef enum {
+		SYNCSTATE_NORMAL_STATE             = 0,
+		SYNCSTATE_DOMAIN_STATE             = 1,
+		SYNCSTATE_GROUP_STATE              = 2,
+		SYNCSTATE_UAS_BUILT_IN_GROUP_STATE = 3,
+		SYNCSTATE_USER_STATE               = 4,
+		SYNCSTATE_GROUP_MEMBER_STATE       = 5,
+		SYNCSTATE_ALIAS_STATE              = 6,
+		SYNCSTATE_ALIAS_MEMBER_STATE       = 7,
+		SYNCSTATE_SAM_DONE_STATE           = 8
+	} SyncStateEnum;
+
 	NTSTATUS netr_DatabaseSync2(
 		[in]     [string,charset(UTF16)] uint16 logon_server[],
 		[in]     [string,charset(UTF16)] uint16 computername[],
 		[in,ref] netr_Authenticator *credential,
 		[in,out,ref] netr_Authenticator *return_authenticator,
 		[in]     netr_SamDatabaseID database_id,
-		[in]     uint16 restart_state,
+		[in]     SyncStateEnum restart_state,
 		[in,out,ref] uint32 *sync_context,
 		[out,ref]    netr_DELTA_ENUM_ARRAY **delta_enum_array,
 		[in]     uint32 preferredmaximumlength
diff --git a/source3/lib/ldb/ldb_sqlite3/base160.c b/source3/lib/ldb/ldb_sqlite3/base160.c
index 423e2b6..7ad39f7 100644
--- a/source3/lib/ldb/ldb_sqlite3/base160.c
+++ b/source3/lib/ldb/ldb_sqlite3/base160.c
@@ -122,7 +122,7 @@ lsqlite3_base160Next(char base160[])
      * We need a minimum of four digits, and we will always get a multiple of
      * four digits.
      */
-    if (len = strlen(pBase160)) >= 4)
+    if ((len = strlen(pBase160)) >= 4)
     {
         pBase160 += strlen(pBase160) - 1;
 
diff --git a/source3/lib/ldb/tools/ldbmodify.c b/source3/lib/ldb/tools/ldbmodify.c
index e3552b4..a83053d 100644
--- a/source3/lib/ldb/tools/ldbmodify.c
+++ b/source3/lib/ldb/tools/ldbmodify.c
@@ -108,6 +108,7 @@ int main(int argc, const char **argv)
 				exit(1);
 			}
 			ret = process_file(ldb, f, &count, &failures);
+			fclose(f);
 		}
 	}
 
diff --git a/source4/auth/auth.h b/source4/auth/auth.h
index f6d7393..6bad017 100644
--- a/source4/auth/auth.h
+++ b/source4/auth/auth.h
@@ -232,7 +232,8 @@ NTSTATUS authsam_account_ok(TALLOC_CTX *mem_ctx,
 			    struct ldb_message *msg,
 			    const char *logon_workstation,
 			    const char *name_for_logs,
-			    bool allow_domain_trust);
+			    bool allow_domain_trust,
+			    bool password_change);
 struct auth_session_info *system_session(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);
 NTSTATUS authsam_make_server_info(TALLOC_CTX *mem_ctx, struct ldb_context *sam_ctx,
 					   const char *netbios_name,
diff --git a/source4/auth/gensec/gensec_krb5.c b/source4/auth/gensec/gensec_krb5.c
index b04abfc..09bdec5 100644
--- a/source4/auth/gensec/gensec_krb5.c
+++ b/source4/auth/gensec/gensec_krb5.c
@@ -609,7 +609,9 @@ static NTSTATUS gensec_krb5_session_info(struct gensec_security *gensec_security


-- 
Samba Shared Repository


More information about the samba-cvs mailing list