[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Tue Jun 13 20:46:02 UTC 2017


The branch, master has been updated
       via  aa74d6e WHATSNEW: deprecated "profile acls"
       via  c6bc00f docs-xml/smbdotconf: deprecated "profile acls"
       via  378ae34 strerror_r: provide XSI-compliant strerror_r
      from  40cc7a1 ctdb-recovery: Log messages at various debug levels

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


- Log -----------------------------------------------------------------
commit aa74d6edf597c92112553b74d9e3675dfa30ca48
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jun 13 11:59:30 2017 +0200

    WHATSNEW: deprecated "profile acls"
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Jun 13 22:45:28 CEST 2017 on sn-devel-144

commit c6bc00f1da785933d3a99454f6ef131027860602
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jun 13 11:59:30 2017 +0200

    docs-xml/smbdotconf: deprecated "profile acls"
    
    This doesn't work anymore with modern clients,
    and there're better ways to support profiles on a share.
    
    Typically something like this seems to work:
    
    [winprofiles]
      comment = Users profiles New
      path = /data/winprofiles/
      browseable = No
      read only = No
      csc policy = disable
      store dos attributes = yes
      vfs objects = acl_xattr
    
    With chmod 1777 on /data/winprofiles/
    
    In order to work around some locking problems, see
    https://bugzilla.samba.org/show_bug.cgi?id=12833
    
    It's also useful to something like this in the global
    section in order to detect disconnects reliable:
    
      socket options = TCP_KEEPCNT=5 TCP_KEEPIDLE=30 TCP_KEEPINTVL=1
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 378ae342c4e2e6b5bafbe54067d35344746be41b
Author: Gary Lockyer <gary at catalyst.net.nz>
Date:   Thu Jun 1 13:26:38 2017 +1200

    strerror_r: provide XSI-compliant strerror_r
    
    Provide a XSI-compliant strerror_r on GNU based systems.
    The default GNU strerror_r is not XSI-compliant, this patch wraps the
    GNU-specific call in an XSI-compliant wrapper.
    
    This reverts 18ed32ce0821d11c0c06d82c07ba1c27b0c2b886 which tried to
    make Heimdal use roken, rather than libreplace for strerror_r.
    
    Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 WHATSNEW.txt                                   |  1 +
 docs-xml/smbdotconf/protocol/profileacls.xml   | 16 +++++
 lib/replace/replace.c                          | 18 ++++++
 lib/replace/replace.h                          |  2 +-
 lib/replace/wscript                            |  7 +++
 source4/dsdb/samdb/ldb_modules/password_hash.c |  7 ++-
 source4/heimdal/lib/roken/strerror_r.c         | 84 --------------------------
 source4/heimdal_build/config.h                 |  3 +
 source4/heimdal_build/wscript_build            |  1 -
 source4/heimdal_build/wscript_configure        |  7 ---
 10 files changed, 52 insertions(+), 94 deletions(-)
 delete mode 100644 source4/heimdal/lib/roken/strerror_r.c


Changeset truncated at 500 lines:

diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 8548e16..1a36e88 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -103,6 +103,7 @@ smb.conf changes
   auth event notification       New parameter           no
   auth methods                  Deprecated
   map untrusted to domain       Deprecated
+  profile acls                  Deprecated
   strict sync                   Default changed         yes
 
 Removal of lpcfg_register_defaults_hook()
diff --git a/docs-xml/smbdotconf/protocol/profileacls.xml b/docs-xml/smbdotconf/protocol/profileacls.xml
index ade906c..a660c52 100644
--- a/docs-xml/smbdotconf/protocol/profileacls.xml
+++ b/docs-xml/smbdotconf/protocol/profileacls.xml
@@ -1,9 +1,22 @@
 <samba:parameter name="profile acls"
                  context="S"
                  type="boolean"
+                 deprecated="1"
                  xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
 <description>
 	<para>
+	As most system support support posix acls and extended attributes
+	today. The "acl_xattr" vfs module should be used instead of
+	using <smbconfoption name="profile acls">yes</smbconfoption>.
+	Using an vfs module that provides nfs4 acls may also work.
+	</para>
+
+	<para>
+	With modern clients (as of 2017) it's not possible to
+	use <smbconfoption name="profile acls">yes</smbconfoption> anymore.
+	</para>
+
+	<para>
 	This boolean parameter was added to fix the problems that people have been
 	having with storing user profiles on Samba shares from Windows 2000 or
 	Windows XP clients. New versions of Windows 2000 or Windows XP service
@@ -40,6 +53,9 @@
 	On other shares, it might cause incorrect file ownerships.
 	</para>
 
+	<para>
+	This parameter is deprecated with Samba 4.7 and will be removed in future versions.
+	</para>
 </description>
 
 <value type="default">no</value>
diff --git a/lib/replace/replace.c b/lib/replace/replace.c
index b5d7f11..9351b6c 100644
--- a/lib/replace/replace.c
+++ b/lib/replace/replace.c
@@ -820,6 +820,24 @@ int rep_strerror_r(int errnum, char *buf, size_t buflen)
 	strncpy(buf, s, buflen);
 	return 0;
 }
+#elif (!defined(STRERROR_R_XSI_NOT_GNU))
+#undef strerror_r
+int rep_strerror_r(int errnum, char *buf, size_t buflen)
+{
+	char *s = strerror_r(errnum, buf, buflen);
+	if (s == NULL) {
+		/* Shouldn't happen, should always get a string */
+		return EINVAL;
+	}
+	if (s != buf) {
+		strlcpy(buf, s, buflen);
+		if (strlen(s) > buflen - 1) {
+			return ERANGE;
+		}
+	}
+	return 0;
+
+}
 #endif
 
 #ifndef HAVE_CLOCK_GETTIME
diff --git a/lib/replace/replace.h b/lib/replace/replace.h
index 1dbeacf..a41e9f8 100644
--- a/lib/replace/replace.h
+++ b/lib/replace/replace.h
@@ -628,7 +628,7 @@ ssize_t rep_pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset)
 char *rep_get_current_dir_name(void);
 #endif
 
-#ifndef HAVE_STRERROR_R
+#if (!defined(HAVE_STRERROR_R) || !defined(STRERROR_R_XSI_NOT_GNU))
 #define strerror_r rep_strerror_r
 int rep_strerror_r(int errnum, char *buf, size_t buflen);
 #endif
diff --git a/lib/replace/wscript b/lib/replace/wscript
index eeb1b3e..33f49eb 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -627,6 +627,13 @@ removeea setea
 
     conf.RECURSE('system')
     conf.SAMBA_CONFIG_H()
+    if conf.CHECK_FUNCS('strerror_r'):
+        # Check if strerror_r is XSI-Compatable, the default GNU implementation
+        # is not
+        conf.CHECK_CODE('int strerror_r(int errnum, char *buf, size_t buflen);',
+                        'STRERROR_R_XSI_NOT_GNU',
+                        headers='string.h', addmain=False, link=False,
+                        msg="Checking for XSI (rather than GNU) prototype for strerror_r")
 
 
 REPLACEMENT_FUNCTIONS = {
diff --git a/source4/dsdb/samdb/ldb_modules/password_hash.c b/source4/dsdb/samdb/ldb_modules/password_hash.c
index 68028f0..1eb39da 100644
--- a/source4/dsdb/samdb/ldb_modules/password_hash.c
+++ b/source4/dsdb/samdb/ldb_modules/password_hash.c
@@ -1543,12 +1543,17 @@ static int setup_primary_userPassword_hash(
 	hash = crypt((char *)io->n.cleartext_utf8->data, cmd);
 #endif
 	if (hash == NULL) {
+		char buf[1024];
+		int err = strerror_r(errno, buf, sizeof(buf));
+		if (err != 0) {
+			strlcpy(buf, "Unknown error", sizeof(buf)-1);
+		}
 		ldb_asprintf_errstring(
 			ldb,
 			"setup_primary_userPassword: generation of a %s "
 			"password hash failed: (%s)",
 			scheme,
-			strerror(errno));
+			buf);
 		TALLOC_FREE(frame);
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
diff --git a/source4/heimdal/lib/roken/strerror_r.c b/source4/heimdal/lib/roken/strerror_r.c
deleted file mode 100644
index 85271ec..0000000
--- a/source4/heimdal/lib/roken/strerror_r.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 1995, 1996, 1997, 1998 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <config.h>
-
-#if (!defined(HAVE_STRERROR_R) && !defined(strerror_r)) || (!defined(STRERROR_R_PROTO_COMPATIBLE) && defined(HAVE_STRERROR_R))
-
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include "roken.h"
-
-#ifdef _MSC_VER
-
-int ROKEN_LIB_FUNCTION
-rk_strerror_r(int eno, char * strerrbuf, size_t buflen)
-{
-    errno_t err;
-
-    err = strerror_s(strerrbuf, buflen, eno);
-    if (err != 0) {
-        int code;
-        code = sprintf_s(strerrbuf, buflen, "Error % occurred.", eno);
-        err = ((code != 0)? errno : 0);
-    }
-
-    return err;
-}
-
-#else  /* _MSC_VER */
-
-int ROKEN_LIB_FUNCTION
-rk_strerror_r(int eno, char *strerrbuf, size_t buflen)
-{
-    /* Assume is the linux broken strerror_r (returns the a buffer (char *) if the input buffer wasn't use */
-#ifdef HAVE_STRERROR_R
-    const char *str;
-    str = strerror_r(eno, strerrbuf, buflen);
-    if (str != strerrbuf)
-	if (strlcpy(strerrbuf, str, buflen) >= buflen)
-	    return ERANGE;
-    return 0;
-#else
-    int ret;
-    ret = strlcpy(strerrbuf, strerror(eno), buflen);
-    if (ret > buflen)
-	return ERANGE;
-    return 0;
-#endif
-}
-
-#endif  /* !_MSC_VER */
-
-#endif
diff --git a/source4/heimdal_build/config.h b/source4/heimdal_build/config.h
index 2d113ae..a766922 100644
--- a/source4/heimdal_build/config.h
+++ b/source4/heimdal_build/config.h
@@ -49,4 +49,7 @@
 /* heimdal now wants some atomic ops - ask for the non-atomic ones for Samba */
 #define HEIM_BASE_NON_ATOMIC 1
 
+/* lib/replace provides an XSI Compatable strerror_r so use that */
+#define STRERROR_R_PROTO_COMPATIBLE
+
 #endif
diff --git a/source4/heimdal_build/wscript_build b/source4/heimdal_build/wscript_build
index c733b8f..2072be4 100644
--- a/source4/heimdal_build/wscript_build
+++ b/source4/heimdal_build/wscript_build
@@ -408,7 +408,6 @@ if not bld.CONFIG_SET('USING_SYSTEM_ROKEN'):
         lib/roken/resolve.c
         lib/roken/socket.c
         lib/roken/roken_gethostby.c
-        lib/roken/strerror_r.c
     '''
 
     HEIMDAL_LIBRARY('roken',
diff --git a/source4/heimdal_build/wscript_configure b/source4/heimdal_build/wscript_configure
index 67ac34b..354d44f 100644
--- a/source4/heimdal_build/wscript_configure
+++ b/source4/heimdal_build/wscript_configure
@@ -28,13 +28,6 @@ conf.CHECK_FUNCS('''atexit cgetent getprogname setprogname gethostname
             strptime strsep strsep_copy    strtok_r strupr swab umask uname unsetenv
             closefrom err warn errx warnx flock writev''')
 
-if conf.CHECK_FUNCS('strerror_r'):
-    # Check if strerror_r is BSD compatible (default GNU implementation is not what Heimdal expects)
-    conf.CHECK_CODE('int strerror_r(int errnum, char *buf, size_t buflen);',
-                    'STRERROR_R_PROTO_COMPATIBLE',
-                    headers='string.h', addmain=False, link=False,
-                    msg="Checking for XSI (rather than GNU) prototype for strerror_r")
-
 conf.CHECK_FUNCS_IN('hstrerror', 'resolv socket nsl', checklibc=True)
 conf.CHECK_FUNCS_IN('''getnameinfo sendmsg socket getipnodebyname gethostent gethostent_r
                        sethostent endhostent getipnodebyaddr freehostent gethostbyname


-- 
Samba Shared Repository



More information about the samba-cvs mailing list