7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
authorJiri Sasek <Jiri.Sasek@Sun.COM>
Mon, 18 Jun 2012 11:06:49 -0700
changeset 874 cef42778dd8b
parent 873 eacbe16b1cd9
child 875 5e870fe2b411
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1 7175829 passwords greater than 8 characters supplied to smbpasswd 3.6 don't work 7175184 Samba 3.6.4 net ads join fails failed to lookup DC info for domain 'DOMAIN' over rpc: Logon failure
components/samba/samba/Makefile
components/samba/samba/patches/7167490-8952.patch
components/samba/samba/patches/7175829-8729.patch
--- a/components/samba/samba/Makefile	Mon Jun 18 09:57:40 2012 -0700
+++ b/components/samba/samba/Makefile	Mon Jun 18 11:06:49 2012 -0700
@@ -123,6 +123,7 @@
 CFLAGS.studio	+=	$(studio_C99_ENABLE)
 CFLAGS.gcc	+=	-std=c99
 
+CPPFLAGS +=	-DSAMBA_VERSION_VENDOR_SUFFIX=\\\"Samba_bugs_8729_8952_fixed\\\"
 CPPFLAGS +=	$(CPP_LARGEFILES)
 CPPFLAGS +=	$(CPP_XPG6MODE)
 CPPFLAGS +=	-I$(PROTOUSRINCDIR)/samba -I$(PROTOUSRINCDIR)/samba/ldap6 -I$(BUILD_DIR_$(BITS))/include
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/samba/samba/patches/7167490-8952.patch	Mon Jun 18 11:06:49 2012 -0700
@@ -0,0 +1,44 @@
+From 7a64da3189a1e901aff66aa5e2e46e4a9c03750f Mon Sep 17 00:00:00 2001
+From: Ira Cooper <[email protected]>
+Date: Wed, 23 May 2012 21:39:03 -0400
+Subject: [PATCH] s3-passdb: Fix negative SID->uid/gid cache handling. (bug #8952)
+
+-1 uid/gid signals a non existent uid/gid.
+
+Signed-off-by: Stefan Metzmacher <[email protected]>
+---
+ source3/passdb/lookup_sid.c |   17 +++++++++++++++++
+ 1 files changed, 17 insertions(+), 0 deletions(-)
+
+diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c
+index 5cf391f..2afa86e 100644
+--- a/source3/passdb/lookup_sid.c
++++ b/source3/passdb/lookup_sid.c
+@@ -1490,7 +1490,24 @@ bool sids_to_unix_ids(const struct dom_sid *sids, uint32_t num_sids,
+ 			continue;
+ 		}
+ 	}
++
+ done:
++	for (i=0; i<num_sids; i++) {
++		switch(ids[i].type) {
++		case WBC_ID_TYPE_GID:
++			if (ids[i].id.gid == (gid_t)-1) {
++				ids[i].type = WBC_ID_TYPE_NOT_SPECIFIED;
++			}
++			break;
++		case WBC_ID_TYPE_UID:
++			if (ids[i].id.uid == (uid_t)-1) {
++				ids[i].type = WBC_ID_TYPE_NOT_SPECIFIED;
++			}
++			break;
++		case WBC_ID_TYPE_NOT_SPECIFIED:
++			break;
++		}
++	}
+ 	ret = true;
+ fail:
+ 	TALLOC_FREE(wbc_ids);
+-- 
+1.7.4.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/samba/samba/patches/7175829-8729.patch	Mon Jun 18 11:06:49 2012 -0700
@@ -0,0 +1,57 @@
+From 18611335c830d6ea78d79e2376559c8f221db1dc Mon Sep 17 00:00:00 2001
+From: Ira Cooper <[email protected]>
+Date: Tue, 31 Jan 2012 12:15:36 -0800
+Subject: [PATCH] Fix bug #8729 - getpass regressions on Solaris/Illumos - 3.6
+ and master.
+
+Autobuild-User: Jeremy Allison <[email protected]>
+Autobuild-Date: Tue Jan 31 23:28:09 CET 2012 on sn-devel-104
+(cherry picked from commit a1901b55cfa658f39a33d0ea120641f56453fe4e)
+---
+ lib/replace/replace.h       |   11 +++++++++++
+ lib/replace/system/passwd.h |    2 ++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+diff --git a/lib/replace/replace.h b/lib/replace/replace.h
+index c081f23..c47cf1c 100644
+--- a/lib/replace/replace.h
++++ b/lib/replace/replace.h
+@@ -802,4 +802,15 @@ int fdatasync(int );
+ /* prototype is in "system/network.h" */
+ #endif
+ 
++#if !defined(getpass)
++#ifdef REPLACE_GETPASS
++#if defined(REPLACE_GETPASS_BY_GETPASSPHRASE)
++#define getpass(prompt) getpassphrase(prompt)
++#else
++#define getpass(prompt) rep_getpass(prompt)
++char *rep_getpass(const char *prompt);
++#endif
++#endif
++#endif
++
+ #endif /* _LIBREPLACE_REPLACE_H */
+diff --git a/lib/replace/system/passwd.h b/lib/replace/system/passwd.h
+index aaea9c8..03476b9 100644
+--- a/lib/replace/system/passwd.h
++++ b/lib/replace/system/passwd.h
+@@ -67,6 +67,7 @@
+ #include <compat.h>
+ #endif
+ 
++#if !defined(getpass)
+ #ifdef REPLACE_GETPASS
+ #if defined(REPLACE_GETPASS_BY_GETPASSPHRASE)
+ #define getpass(prompt) getpassphrase(prompt)
+@@ -75,6 +76,7 @@
+ char *rep_getpass(const char *prompt);
+ #endif
+ #endif
++#endif 
+ 
+ #ifndef NGROUPS_MAX
+ #define NGROUPS_MAX 32 /* Guess... */
+-- 
+1.7.7.3
+