[SCM] Samba Shared Repository - branch v3-2-stable updated - release-3-2-0-26-gf26e488

Karolin Seeger kseeger at samba.org
Thu Jul 10 07:15:31 GMT 2008


The branch, v3-2-stable has been updated
       via  f26e488a91ec0850dfae2c7827a1b7f5f75adf26 (commit)
       via  90268ad9c9709175303f43debec1d20ab3456569 (commit)
       via  0dd072dc6ca014e820713ca449d05b8e74d4f2fa (commit)
       via  9f2147e00c8db9b2ebc7a0f41ee1650b72d49220 (commit)
       via  1d763ad7bb3b30a8babee13cad34287389a7a086 (commit)
       via  63aa72058a2efd417a84fac416fe85932b38360d (commit)
       via  22bb3b306995569c45abedec77a36348753f4fd0 (commit)
       via  24656ca5144b0bed0fe2b7fc1462ce0093e8498b (commit)
       via  b8ac1c97521ba88fdd7fd7c8eb0997a5d9da91c8 (commit)
       via  ea87f2aa4bd18ebdc6dacf124b2b72227f190f60 (commit)
       via  2603abae7a3701355f733e18f6eeea866ccc5c5f (commit)
       via  9c381bfdcaaf552f145517998e23ad6ea21e5f64 (commit)
      from  ddb3d012647c9ae0e5f7a9ada4219c934839d5a5 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-stable


- Log -----------------------------------------------------------------
commit f26e488a91ec0850dfae2c7827a1b7f5f75adf26
Author: Karolin Seeger <kseeger at samba.org>
Date:   Thu Jul 10 09:16:32 2008 +0200

    WHATSNEW: Update changes since 3.2.0.
    
    Karolin
    (cherry picked from commit ae0e3291bc31217767fc2e0a3c5d26f8b4c72dc3)

commit 90268ad9c9709175303f43debec1d20ab3456569
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Jul 4 09:28:04 2008 +0200

    Fix alignment problems on sparc, bug 5512
    
    Patch successfully tested by Christoph Kaegi <kaph at zhaw.ch>, thanks.
    (cherry picked from commit 9f8df16f476c49da85000b7365c8a6e33b8b71fc)

commit 0dd072dc6ca014e820713ca449d05b8e74d4f2fa
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jul 9 00:33:54 2008 +0200

    testsuite: fix another expr typo in net registry test script.
    
    Michael
    (cherry picked from commit 73312e4e21b6d14363bd0987e0c9716c4ec91834)
    (cherry picked from commit 01ea8d4f34cfe29dd8a945ebe340a80a4eafb9c7)

commit 9f2147e00c8db9b2ebc7a0f41ee1650b72d49220
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jul 9 00:33:14 2008 +0200

    testsuite: fix expr typo in net registry testscript.
    
    Michael
    (cherry picked from commit 5b6c32160a5d8fafc807fbefb66aa8c98662baae)
    (cherry picked from commit 1b293758292a055648403f74d0b565538ad578d2)

commit 1d763ad7bb3b30a8babee13cad34287389a7a086
Author: Zach Loafman <zachary.loafman at isilon.com>
Date:   Mon Jul 7 19:30:47 2008 -0700

    Minor style correction
    
    Set sin[6]_family instead of ss_family in in[6]_addr_to_sockaddr_storage
    so that assignments look like they're going to the same place.
    (cherry picked from commit 01d1dddebff7ec9502422667b12f0bac8fa6a780)

commit 63aa72058a2efd417a84fac416fe85932b38360d
Author: Jeremy Allison <jra at samba.org>
Date:   Mon Jul 7 15:50:39 2008 -0700

    Fix option processing in smbcacls - add POPT_COMMON_CONNECTION.
    Jeremy.
    (cherry picked from commit c1baf310830e7ebff4fe0835812122ec146412da)

commit 22bb3b306995569c45abedec77a36348753f4fd0
Author: Herb Lewis <herb at samba.org>
Date:   Mon Jul 7 12:44:13 2008 -0700

    use variables for files used in multiple places
    (cherry picked from commit cee044bc42d955c535dbb6bb372af01089d37756)

commit 24656ca5144b0bed0fe2b7fc1462ce0093e8498b
Author: Herb Lewis <herb at samba.org>
Date:   Mon Jul 7 12:32:16 2008 -0700

    fix comment typo and change some uint32 to uint32_t
    (cherry picked from commit 8272dace64f39286e4255e9f5bc8d04fb47f2c51)

commit b8ac1c97521ba88fdd7fd7c8eb0997a5d9da91c8
Author: Jeremy Allison <jra at samba.org>
Date:   Mon Jul 7 11:25:57 2008 -0700

    Allow authentication and memory credential refresh after password change from gdm/xdm. Patch from boyang <boyang at novell.com>.
    Jeremy.
    (cherry picked from commit 63316efeeb330d2cb7fa0906824c97da2c7b0074)

commit ea87f2aa4bd18ebdc6dacf124b2b72227f190f60
Author: Michael Adam <obnox at samba.org>
Date:   Mon Jul 7 18:34:13 2008 +0200

    build: fix creation of libaddns.a - don't link in libtalloc.a
    
    another step towards fixing bug #5590
    
    Michael
    (cherry picked from commit 396310775e69baeee06b2e6469854a5ddf759a91)

commit 2603abae7a3701355f733e18f6eeea866ccc5c5f
Author: Michael Adam <obnox at samba.org>
Date:   Mon Jul 7 14:14:35 2008 +0200

    build: fix creation of libsmbclient.a - don't link in libtalloc.a
    
    Second step in fixing bug #5590.
    
    Michael
    (cherry picked from commit dcf986937ccf5e6947c4214aa0838733ed7f3b9b)

commit 9c381bfdcaaf552f145517998e23ad6ea21e5f64
Author: Michael Adam <obnox at samba.org>
Date:   Mon Jul 7 13:52:46 2008 +0200

    build: fix creation of libsmbsharemodes.a - don't link in libtdb.a.
    
    First step in fixing bug #5590.
    
    Michael
    (cherry picked from commit 4fc57a0a90390ede1161fd6f231ea274c9c74b20)

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

Summary of changes:
 WHATSNEW.txt                             |   17 +++++++++
 source/Makefile.in                       |   59 ++++++++++++++++--------------
 source/lib/util_sock.c                   |    4 +-
 source/locking/locking.c                 |   39 ++++++++++----------
 source/nsswitch/pam_winbind.c            |   21 +++++++----
 source/script/tests/test_net_registry.sh |    4 +-
 source/utils/smbcacls.c                  |    3 +-
 source/winbindd/idmap.c                  |    8 ++--
 source/winbindd/winbindd_pam.c           |   25 ++++++++++++-
 9 files changed, 116 insertions(+), 64 deletions(-)


Changeset truncated at 500 lines:

diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 5a90af9..03b6100 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -18,6 +18,10 @@ Changes since 3.2.0
 -------------------
 
 
+o   Michael Adam <obnox at samba.org>
+    * Fix creation of libaddns.a, libsmbclient.a and libsharemodes.a.
+
+
 o   Jeremy Allison <jra at samba.org>
     * BUG 5578: Fix error from strlcat.
     * Ensure consistent use of pdb_get_nt_passwd instead of
@@ -26,6 +30,7 @@ o   Jeremy Allison <jra at samba.org>
       pseaudo interface name that's too long.
     * Canonicalize servername in the printer functions to remove leading
       '\\' characters.
+    * Fix option processing in smbcacls - add POPT_COMMON_CONNECTION.
 
 
 o   Jim Brown <jim.brown at miami.edu>
@@ -44,6 +49,14 @@ o   SATOH Fumiyasu <fumiyas at osstech.co.jp>
       to owning group.
 
 
+o   Volker Lendecke <vl at samba.org>
+    * BUG 5512: Fix alignment problems on sparc.
+
+
+o   Zach Loafman <zachary.loafman at isilon.com>
+    * Set sin[6]_family instead of ss_family in in[6]_addr_to_sockaddr_storage.
+
+
 o   Lars Müller <lars at samba.org>
     * Fix "vfs_full_audit.c: name table not in sync with vfs.h" panic.
 
@@ -52,6 +65,10 @@ o   Darshan Purandare <dpurandare at isilon.com>
     * Add broadcasting of the debug message to all winbindd children.
 
 
+o   Bo Yang <boyang at novell.com>
+    * Allow authentication and memory credential refresh after password
+      change from gdm/xdm.
+
 
 ######################################################################
 Reporting bugs & Development Discussion
diff --git a/source/Makefile.in b/source/Makefile.in
index 04ff7cc..d63063d 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -284,16 +284,20 @@ LIBNDR_OBJ = librpc/ndr/ndr_basic.o \
 
 RPCCLIENT_NDR_OBJ = rpc_client/ndr.o
 
+LIBNDR_GEN_OBJ0 = librpc/gen_ndr/ndr_samr.o \
+		  librpc/gen_ndr/ndr_lsa.o
+
+LIBNDR_GEN_OBJ1 = librpc/gen_ndr/ndr_netlogon.o
+
 LIBNDR_GEN_OBJ = librpc/gen_ndr/ndr_wkssvc.o \
-		 librpc/gen_ndr/ndr_lsa.o \
+		 $(LIBNDR_GEN_OBJ0) \
 		 librpc/gen_ndr/ndr_dfs.o \
 		 librpc/gen_ndr/ndr_echo.o \
 		 librpc/gen_ndr/ndr_winreg.o \
 		 librpc/gen_ndr/ndr_initshutdown.o \
 		 librpc/gen_ndr/ndr_srvsvc.o \
 		 librpc/gen_ndr/ndr_eventlog.o \
-		 librpc/gen_ndr/ndr_netlogon.o \
-		 librpc/gen_ndr/ndr_samr.o \
+		 $(LIBNDR_GEN_OBJ1) \
 		 librpc/gen_ndr/ndr_dssetup.o \
 		 librpc/gen_ndr/ndr_notify.o \
 		 librpc/gen_ndr/ndr_xattr.o \
@@ -724,7 +728,7 @@ NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
 
 NMBD_OBJ = $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
            $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) \
-	   librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+	   $(LIBNDR_GEN_OBJ0)
 
 SWAT_OBJ1 = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
            web/swat.o web/neg_lang.o
@@ -771,7 +775,7 @@ PDBEDIT_OBJ = utils/pdbedit.o $(PASSWD_UTIL_OBJ) $(PARAM_OBJ) $(PASSDB_OBJ) @LIB
 		$(POPT_LIB_OBJ) $(SMBLDAP_OBJ) libsmb/asn1.o \
 		$(LDB_OBJ)
 
-SMBGET_OBJ = utils/smbget.o $(POPT_LIB_OBJ) $(LIBSMBCLIENT_OBJ0) @LIBWBCLIENT_STATIC@
+SMBGET_OBJ = utils/smbget.o $(POPT_LIB_OBJ) $(LIBSMBCLIENT_OBJ1) @LIBWBCLIENT_STATIC@
 
 DISPLAY_SEC_OBJ= lib/display_sec.o
 
@@ -806,15 +810,18 @@ LIBSMBCLIENT_OBJ0 = \
 		    libsmb/libsmb_server.o \
 		    libsmb/libsmb_stat.o \
 		    libsmb/libsmb_xattr.o \
-		    libsmb/libsmb_setget.o \
+		    libsmb/libsmb_setget.o
+
+LIBSMBCLIENT_OBJ1 = $(LIBSMBCLIENT_OBJ0) \
 		    $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
 		    $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
 		    $(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) $(RPC_PARSE_OBJ) \
 		    $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ) $(LDB_OBJ)
 
-LIBSMBCLIENT_OBJ = $(LIBSMBCLIENT_OBJ0) @LIBWBCLIENT_STATIC@
+LIBSMBCLIENT_OBJ = $(LIBSMBCLIENT_OBJ1) @LIBWBCLIENT_STATIC@
 
-LIBSMBSHAREMODES_OBJ = libsmb/smb_share_modes.o @LIBTDB_STATIC@
+LIBSMBSHAREMODES_OBJ0 = libsmb/smb_share_modes.o
+LIBSMBSHAREMODES_OBJ = $(LIBSMBSHAREMODES_OBJ0) @LIBTDB_STATIC@
 
 # This shared library is intended for linking with unit test programs
 # to test Samba internals.  It's called libbigballofmud.so to
@@ -905,7 +912,7 @@ NET_OBJ = $(NET_OBJ1) \
 
 CUPS_OBJ = client/smbspool.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
 	  $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ) \
-	  librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+	  $(LIBNDR_GEN_OBJ0)
 
 CIFS_MOUNT_OBJ = client/mount.cifs.o
 
@@ -921,28 +928,28 @@ SMBTORTURE_OBJ1 = torture/torture.o torture/nbio.o torture/scanner.o torture/uta
 
 SMBTORTURE_OBJ = $(SMBTORTURE_OBJ1) $(PARAM_OBJ) \
 	$(LIBSMB_OBJ) $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) \
-	librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+	$(LIBNDR_GEN_OBJ0)
 
 MASKTEST_OBJ = torture/masktest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
                  $(LIB_NONSMBD_OBJ) \
-		 librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+		 $(LIBNDR_GEN_OBJ0)
 
 MSGTEST_OBJ = torture/msgtest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
                  $(LIB_NONSMBD_OBJ) \
-		 librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+		 $(LIBNDR_GEN_OBJ0)
 
 LOCKTEST_OBJ = torture/locktest.o $(PARAM_OBJ) $(LOCKING_OBJ) $(KRBCLIENT_OBJ) \
                $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) \
-               librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+               $(LIBNDR_GEN_OBJ0)
 
 NSSTEST_OBJ = torture/nsstest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
                  $(LIB_NONSMBD_OBJ) \
-		 librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+		 $(LIBNDR_GEN_OBJ0)
 
 PDBTEST_OBJ = torture/pdbtest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
 		$(LIB_NONSMBD_OBJ) $(PASSDB_OBJ) @LIBWBCLIENT_STATIC@ $(GROUPDB_OBJ) \
 		$(SMBLDAP_OBJ) $(POPT_LIB_OBJ) $(LDB_OBJ) \
-		librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+		$(LIBNDR_GEN_OBJ0)
 
 VFSTEST_OBJ = torture/cmd_vfs.o torture/vfstest.o $(SMBD_OBJ_BASE) $(READLINE_OBJ)
 
@@ -952,7 +959,7 @@ LOG2PCAP_OBJ = utils/log2pcaphex.o
 
 LOCKTEST2_OBJ = torture/locktest2.o $(PARAM_OBJ) $(LOCKING_OBJ) $(LIBSMB_OBJ) \
 		$(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) \
-		librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+		$(LIBNDR_GEN_OBJ0)
 
 SMBCACLS_OBJ = utils/smbcacls.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
 		$(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(RPC_PARSE_OBJ) \
@@ -994,7 +1001,7 @@ DEBUG2HTML_OBJ = utils/debug2html.o utils/debugparse.o
 
 SMBFILTER_OBJ = utils/smbfilter.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
                  $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \
-		 librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+		 $(LIBNDR_GEN_OBJ0)
 
 PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) $(LIBNDR_GEN_OBJ) \
 	    $(SMBD_OBJ_SRV) $(NMBD_OBJ1) $(LIBSMB_OBJ) \
@@ -1018,7 +1025,7 @@ PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) $(LIBNDR_GEN_OBJ) \
 
 WINBIND_WINS_NSS_OBJ = nsswitch/wins.o $(PARAM_OBJ) \
 	$(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ) \
-	librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
+	$(LIBNDR_GEN_OBJ0)
 
 PAM_SMBPASS_OBJ_0 = pam_smbpass/pam_smb_auth.o pam_smbpass/pam_smb_passwd.o \
 		pam_smbpass/pam_smb_acct.o pam_smbpass/support.o
@@ -1134,9 +1141,7 @@ NTLM_AUTH_OBJ = ${NTLM_AUTH_OBJ1} $(LIBSAMBA_OBJ) $(POPT_LIB_OBJ) \
 		$(PASSDB_OBJ) $(GROUPDB_OBJ) \
 		$(SMBLDAP_OBJ) $(LIBNMB_OBJ) \
 		$(LDB_OBJ) $(WBCOMMON_OBJ) @LIBWBCLIENT_STATIC@ \
-		librpc/gen_ndr/ndr_samr.o \
-		librpc/gen_ndr/ndr_lsa.o \
-		librpc/gen_ndr/ndr_netlogon.o
+		$(LIBNDR_GEN_OBJ0) $(LIBNDR_GEN_OBJ1)
 
 
 VLP_OBJ1 = ../testsuite/printing/vlp.o $(RPC_CLIENT_OBJ1) $(RPC_PARSE_OBJ2) $(RPC_CLIENT_OBJ)
@@ -1378,10 +1383,10 @@ bin/umount.cifs at EXEEXT@: $(BINARY_PREREQS) $(CIFS_UMOUNT_OBJ) @BUILD_POPT@
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(CIFS_UMOUNT_OBJ) $(DYNEXP) $(LDFLAGS) @POPTLIBS@
 
-bin/cifs.spnego at EXEEXT@: $(BINARY_PREREQS) $(CIFS_SPNEGO_OBJ) $(LIBSMBCLIENT_OBJ0) @BUILD_POPT@ @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
+bin/cifs.spnego at EXEEXT@: $(BINARY_PREREQS) $(CIFS_SPNEGO_OBJ) $(LIBSMBCLIENT_OBJ1) @BUILD_POPT@ @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(CIFS_SPNEGO_OBJ) $(DYNEXP) $(LDFLAGS) \
-		-lkeyutils $(LIBS) $(LIBSMBCLIENT_OBJ0) $(KRB5LIBS) \
+		-lkeyutils $(LIBS) $(LIBSMBCLIENT_OBJ1) $(KRB5LIBS) \
 		$(LDAP_LIBS) @POPTLIBS@ @LIBTALLOC_LIBS@ @LIBWBCLIENT_SHARED@ \
 		@LIBTDB_LIBS@
 
@@ -1624,9 +1629,9 @@ bin/libaddns. at SHLIBEXT@: $(BINARY_PREREQS) $(LIBADDNS_OBJ) @LIBTALLOC_SHARED@
 		$(KRB5LIBS) $(UUID_LIBS) @LIBTALLOC_LIBS@ \
 		@SONAMEFLAG@`basename $@`.$(SONAME_VER)
 
-bin/libaddns.a: $(BINARY_PREREQS) $(LIBADDNS_OBJ)
+bin/libaddns.a: $(BINARY_PREREQS) $(LIBADDNS_OBJ0)
 	@echo Linking non-shared library $@
-	@-$(AR) -rc $@ $(LIBADDNS_OBJ)
+	@-$(AR) -rc $@ $(LIBADDNS_OBJ0)
 
 $(LIBNETAPI_SYMS): $(LIBNETAPI_HEADERS)
 	@$(MKSYMS_SH) $(AWK) $@ $(LIBNETAPI_HEADERS)
@@ -1661,9 +1666,9 @@ bin/libsmbsharemodes. at SHLIBEXT@: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ) @LIBT
 		$(KRB5LIBS) $(LDAP_LIBS) \
 		@SONAMEFLAG@`basename $@`.$(SONAME_VER)
 
-bin/libsmbsharemodes.a: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ)
+bin/libsmbsharemodes.a: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ0)
 	@echo Linking non-shared library $@
-	@-$(AR) -rc $@ $(LIBSMBSHAREMODES_OBJ)
+	@-$(AR) -rc $@ $(LIBSMBSHAREMODES_OBJ0)
 
 # This is probably wrong for anything other than the GNU linker.
 bin/libbigballofmud. at SHLIBEXT@: $(BINARY_PREREQS) $(LIBBIGBALLOFMUD_OBJ) @LIBTALLOC_SHARED@
diff --git a/source/lib/util_sock.c b/source/lib/util_sock.c
index b2a1ece..822ff26 100644
--- a/source/lib/util_sock.c
+++ b/source/lib/util_sock.c
@@ -365,7 +365,7 @@ void in_addr_to_sockaddr_storage(struct sockaddr_storage *ss,
 {
 	struct sockaddr_in *sa = (struct sockaddr_in *)ss;
 	memset(ss, '\0', sizeof(*ss));
-	ss->ss_family = AF_INET;
+	sa->sin_family = AF_INET;
 	sa->sin_addr = ip;
 }
 
@@ -379,7 +379,7 @@ void in_addr_to_sockaddr_storage(struct sockaddr_storage *ss,
 {
 	struct sockaddr_in6 *sa = (struct sockaddr_in6 *)ss;
 	memset(ss, '\0', sizeof(*ss));
-	ss->ss_family = AF_INET6;
+	sa->sin6_family = AF_INET6;
 	sa->sin6_addr = ip;
 }
 #endif
diff --git a/source/locking/locking.c b/source/locking/locking.c
index 84e5a17..4ee0a19 100644
--- a/source/locking/locking.c
+++ b/source/locking/locking.c
@@ -493,19 +493,19 @@ static void print_share_mode_table(struct locking_data *data)
 
 static bool parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
 {
-	struct locking_data *data;
+	struct locking_data data;
 	int i;
 
 	if (dbuf.dsize < sizeof(struct locking_data)) {
 		smb_panic("parse_share_modes: buffer too short");
 	}
 
-	data = (struct locking_data *)dbuf.dptr;
+	memcpy(&data, dbuf.dptr, sizeof(data));
 
-	lck->delete_on_close = data->u.s.delete_on_close;
-	lck->old_write_time = data->u.s.old_write_time;
-	lck->changed_write_time = data->u.s.changed_write_time;
-	lck->num_share_modes = data->u.s.num_share_mode_entries;
+	lck->delete_on_close = data.u.s.delete_on_close;
+	lck->old_write_time = data.u.s.old_write_time;
+	lck->changed_write_time = data.u.s.changed_write_time;
+	lck->num_share_modes = data.u.s.num_share_mode_entries;
 
 	DEBUG(10, ("parse_share_modes: delete_on_close: %d, owrt: %s, "
 		   "cwrt: %s, tok: %u, num_share_modes: %d\n",
@@ -515,7 +515,7 @@ static bool parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
 		   timestring(debug_ctx(),
 			      convert_timespec_to_time_t(
 				      lck->changed_write_time)),
-		   (unsigned int)data->u.s.delete_token_size,
+		   (unsigned int)data.u.s.delete_token_size,
 		   lck->num_share_modes));
 
 	if ((lck->num_share_modes < 0) || (lck->num_share_modes > 1000000)) {
@@ -535,7 +535,8 @@ static bool parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
 		}
 				  
 		lck->share_modes = (struct share_mode_entry *)
-			TALLOC_MEMDUP(lck, dbuf.dptr+sizeof(*data),
+			TALLOC_MEMDUP(lck,
+				      dbuf.dptr+sizeof(struct locking_data),
 				      lck->num_share_modes *
 				      sizeof(struct share_mode_entry));
 
@@ -545,15 +546,15 @@ static bool parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
 	}
 
 	/* Get any delete token. */
-	if (data->u.s.delete_token_size) {
-		uint8 *p = dbuf.dptr + sizeof(*data) +
+	if (data.u.s.delete_token_size) {
+		uint8 *p = dbuf.dptr + sizeof(struct locking_data) +
 				(lck->num_share_modes *
 				sizeof(struct share_mode_entry));
 
-		if ((data->u.s.delete_token_size < sizeof(uid_t) + sizeof(gid_t)) ||
-				((data->u.s.delete_token_size - sizeof(uid_t)) % sizeof(gid_t)) != 0) {
+		if ((data.u.s.delete_token_size < sizeof(uid_t) + sizeof(gid_t)) ||
+				((data.u.s.delete_token_size - sizeof(uid_t)) % sizeof(gid_t)) != 0) {
 			DEBUG(0, ("parse_share_modes: invalid token size %d\n",
-				data->u.s.delete_token_size));
+				data.u.s.delete_token_size));
 			smb_panic("parse_share_modes: invalid token size");
 		}
 
@@ -569,8 +570,8 @@ static bool parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
 		p += sizeof(gid_t);
 
 		/* Any supplementary groups ? */
-		lck->delete_token->ngroups = (data->u.s.delete_token_size > (sizeof(uid_t) + sizeof(gid_t))) ?
-					((data->u.s.delete_token_size -
+		lck->delete_token->ngroups = (data.u.s.delete_token_size > (sizeof(uid_t) + sizeof(gid_t))) ?
+					((data.u.s.delete_token_size -
 						(sizeof(uid_t) + sizeof(gid_t)))/sizeof(gid_t)) : 0;
 
 		if (lck->delete_token->ngroups) {
@@ -592,13 +593,13 @@ static bool parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
 	}
 
 	/* Save off the associated service path and filename. */
-	lck->servicepath = (const char *)dbuf.dptr + sizeof(*data) +
+	lck->servicepath = (const char *)dbuf.dptr + sizeof(struct locking_data) +
 		(lck->num_share_modes *	sizeof(struct share_mode_entry)) +
-		data->u.s.delete_token_size;
+		data.u.s.delete_token_size;
 
-	lck->filename = (const char *)dbuf.dptr + sizeof(*data) +
+	lck->filename = (const char *)dbuf.dptr + sizeof(struct locking_data) +
 		(lck->num_share_modes *	sizeof(struct share_mode_entry)) +
-		data->u.s.delete_token_size +
+		data.u.s.delete_token_size +
 		strlen(lck->servicepath) + 1;
 
 	/*
diff --git a/source/nsswitch/pam_winbind.c b/source/nsswitch/pam_winbind.c
index e42199c..95b3d23 100644
--- a/source/nsswitch/pam_winbind.c
+++ b/source/nsswitch/pam_winbind.c
@@ -2384,15 +2384,17 @@ static bool _pam_require_krb5_auth_after_chauthtok(struct pwb_context *ctx,
 	/* Make sure that we only do this if a) the chauthtok got initiated
 	 * during a logon attempt (authenticate->acct_mgmt->chauthtok) b) any
 	 * later password change via the "passwd" command if done by the user
-	 * itself */
+	 * itself
+	 * NB. If we login from gdm or xdm and the password expires,
+	 * we change the password, but there is no memory cache.
+	 * Thus, even for passthrough login, we should do the
+	 * authentication again to update memory cache.
+	 * --- BoYang
+	 * */
 
 	char *new_authtok_reqd_during_auth = NULL;
 	struct passwd *pwd = NULL;
 
-	if (!(ctx->ctrl & WINBIND_KRB5_AUTH)) {
-		return false;
-	}
-
 	_pam_get_data(ctx->pamh, PAM_WINBIND_NEW_AUTHTOK_REQD_DURING_AUTH,
 		      &new_authtok_reqd_during_auth);
 	pam_set_data(ctx->pamh, PAM_WINBIND_NEW_AUTHTOK_REQD_DURING_AUTH,
@@ -2630,8 +2632,13 @@ int pam_sm_chauthtok(pam_handle_t * pamh, int flags,
 			cctype = get_krb5_cc_type_from_config(ctx);
 			warn_pwd_expire = get_warn_pwd_expire_from_config(ctx);
 
-			/* clearing offline bit for auth */
-			ctx->ctrl &= ~WINBIND_CACHED_LOGIN;
+			/* Keep WINBIND_CACHED_LOGIN bit for
+			 * authentication after changing the password.
+			 * This will update the cached credentials in case
+			 * that winbindd_dual_pam_chauthtok() fails
+			 * to update them.
+			 * --- BoYang
+			 * */
 
 			ret = winbind_auth_request(ctx, user, pass_new,
 						   member, cctype, 0, &response,
diff --git a/source/script/tests/test_net_registry.sh b/source/script/tests/test_net_registry.sh
index b6d2797..0f29b25 100755
--- a/source/script/tests/test_net_registry.sh
+++ b/source/script/tests/test_net_registry.sh
@@ -402,7 +402,7 @@ testit "delete^2 key" \
 
 testit "enumerate nonexisting key" \
 	test_enumerate_nonexisting HKLM/testkey || \
-	failed=`expr $failed +1`
+	failed=`expr $failed + 1`
 
 testit "create key with subkey" \
 	test_createkey_with_subkey HKLM/testkey/subkey || \
@@ -435,7 +435,7 @@ testit "delete key with value" \
 if test "x${RPC}" = "xrpc" ; then
 testit "taking administrative rights from user ${USERNAME}" \
 	take_administrative_rights || \
-	failed=`expr $failed +1`
+	failed=`expr $failed + 1`
 fi
 
 testok $0 $failed
diff --git a/source/utils/smbcacls.c b/source/utils/smbcacls.c
index 97d194a..0534921 100644
--- a/source/utils/smbcacls.c
+++ b/source/utils/smbcacls.c
@@ -900,8 +900,9 @@ static struct cli_state *connect_one(const char *server, const char *share)
 		{ "numeric", 0, POPT_ARG_NONE, &numeric, True, "Don't resolve sids or masks to names" },
 		{ "test-args", 't', POPT_ARG_NONE, &test_args, True, "Test arguments"},
 		POPT_COMMON_SAMBA
+		POPT_COMMON_CONNECTION
 		POPT_COMMON_CREDENTIALS
-		{ NULL }
+		POPT_TABLEEND
 	};
 
 	struct cli_state *cli;
diff --git a/source/winbindd/idmap.c b/source/winbindd/idmap.c
index 10807e6..c9eae33 100644
--- a/source/winbindd/idmap.c
+++ b/source/winbindd/idmap.c
@@ -798,7 +798,7 @@ NTSTATUS idmap_init(void)
 		}
 	}
 
-	/* cleanpu temporary strings */
+	/* cleanup temporary strings */
 	TALLOC_FREE( compat_backend );
 
 	idmap_init_status = NT_STATUS_OK;
@@ -897,7 +897,7 @@ NTSTATUS idmap_set_gid_hwm(struct unixid *id)
 static struct idmap_domain* find_idmap_domain_from_sid( DOM_SID *account_sid )
 {
 	DOM_SID domain_sid;
-	uint32 rid;
+	uint32_t rid;
 	struct winbindd_domain *domain = NULL;
 	int i;
 
@@ -939,7 +939,7 @@ static struct idmap_domain* find_idmap_domain_from_sid( DOM_SID *account_sid )
  Lookup an index given an idmap_domain pointer
  ******************************************************************************/
 
-static uint32 find_idmap_domain_index( struct idmap_domain *id_domain)
+static uint32_t find_idmap_domain_index( struct idmap_domain *id_domain)
 {
 	int i;
 
@@ -1212,7 +1212,7 @@ static NTSTATUS idmap_backends_sids_to_unixids(struct id_map **ids)
 	/* partition the requests by domain */
 
 	for (i = 0; ids[i]; i++) {
-		uint32 idx;
+		uint32_t idx;
 
 		if ((dom = find_idmap_domain_from_sid(ids[i]->sid)) == NULL) {
 			/* no available idmap_domain.  Move on */
diff --git a/source/winbindd/winbindd_pam.c b/source/winbindd/winbindd_pam.c
index 2de10a9..ce6a256 100644
--- a/source/winbindd/winbindd_pam.c
+++ b/source/winbindd/winbindd_pam.c
@@ -2114,11 +2114,21 @@ enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact
 done: 
 
 	if (NT_STATUS_IS_OK(result) && (state->request.flags & WBFLAG_PAM_CACHED_LOGIN)) {
-		
+
 		/* Update the single sign-on memory creds. */
 		result = winbindd_replace_memory_creds(state->request.data.chauthtok.user,
 							newpass);
 
+		/* When we login from gdm or xdm and password expires,
+		 * we change password, but there are no memory crendentials
+		 * So, winbindd_replace_memory_creds() returns
+		 * NT_STATUS_OBJECT_NAME_NOT_FOUND. This is not a failure.
+		 * --- BoYang
+		 * */
+		if (NT_STATUS_EQUAL(result, NT_STATUS_OBJECT_NAME_NOT_FOUND)) {
+			result = NT_STATUS_OK;
+		}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list