[SCM] Samba Shared Repository - branch v3-6-stable updated
Karolin Seeger
kseeger at samba.org
Mon Jan 21 01:21:50 MST 2013
The branch, v3-6-stable has been updated
via 0356de9 WHATSNEW: Prepare release notes for 3.6.11.
via af874a7 ntlm_auth(1): fix format and make examples visible (bug #9569)
via 9f09687 Fix bug #9471 - SEGV when using second vfs module.
via a3f5202 Fix bug #9196 - defer_open is triggered multiple times on the same request.
via 2b8c53d Fix bug 9548: Correctly detect O_DIRECT (cherry picked from commit c89f3ddd5db2de099e5b871d41553637d35e4097)
via 5be19ac lib/replace: Add missing check for sys/wait.h
via 68082b1 lib/replace: Add ucontext configure autoconf checks.
via 5e1f60f lib/replace: Include sys/ucontext.h if available.
via afb78ae tevent: Fix bug 9550 - sigprocmask does not work on FreeBSD to stop further signals in a signal handler
via 5bbb6b6 configure: Fix bug 9546, aio_suspend detection on FreeBSD
from acd5be0 WHATSNEW: Start release notes for Samba 3.6.11.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-stable
- Log -----------------------------------------------------------------
commit 0356de9521fbd72ecf0f1707563b44227a182eed
Author: Karolin Seeger <kseeger at samba.org>
Date: Fri Jan 18 11:23:51 2013 +0100
WHATSNEW: Prepare release notes for 3.6.11.
Karolin
(cherry picked from commit 090d346017d5b3afb1baaa26d3c05ecb721fbd24)
commit af874a7a96dd119673d473f332cd6efa20a8df85
Author: Björn Baumbach <bb at sernet.de>
Date: Tue Dec 4 10:54:05 2012 +0100
ntlm_auth(1): fix format and make examples visible (bug #9569)
"<example>" is no child of "<para>". So these examples were not visible.
Using a varlist instead may be not the best way but it does look nice.
Signed-off-by: Björn Baumbach <bb at sernet.de>
Reviewed-by: Michael Adam <obnox at samba.org>
Reviewed-by: Volker Lendecke <vl at samba.org>
(cherry picked from commit cabc89a1e72fc95300d4b6f8d480a7d666221b8b)
(cherry picked from commit 2cd0314f1fe47ac30e0df6791ff27850b09e6d83)
commit 9f096874faef1162f04f00641710aacb685b0c40
Author: Tsukasa Hamano <hamano at osstech.co.jp>
Date: Thu Dec 6 13:01:33 2012 -0800
Fix bug #9471 - SEGV when using second vfs module.
Don't use default_classname_table when we obviously shoud be using
classname_table.
Reviewed by: Jeremy Allison <jra at samba.org>
Reviewed-by: Michael Adam <obnox at samba.org>
Autobuild-User(master): Michael Adam <obnox at samba.org>
Autobuild-Date(master): Fri Dec 7 17:51:50 CET 2012 on sn-devel-104
(cherry picked from commit 16d725b4f5ed77db865e2a3c27ae0eb4accca5a8)
(cherry picked from commit 25eb1af07cc09e5e019a0702c60a763cc3266196)
(cherry picked from commit 82db35cdb426355e4b7fd7ecf1ce9d9fca59ecd3)
commit a3f5202cfeb48b64ffe9958b35c477c9d4f68788
Author: Jeremy Allison <jra at samba.org>
Date: Fri Dec 14 08:56:52 2012 -0800
Fix bug #9196 - defer_open is triggered multiple times on the same request.
get_deferred_open_message_state_smb2() is buggy in that it is checking
the wrong things to determine if an open is in the deferred state.
It checks if (smb2req->async == NULL) which is incorrect,
as we're not always async in a deferred open - remove this.
It should check instead state->open_was_deferred as this
is explicity set to 'true' when an open is going deferred,
so add this check.
Signed-off-by: Jeremy Allison <jra at samba.org>
(cherry picked from commit a8658bcb67927282288af5a579e3e66d3eaaac7b)
commit 2b8c53d70129a7d364de00d220a547ec7bc900b2
Author: Volker Lendecke <vl at samba.org>
Date: Sat Jan 12 16:08:07 2013 +0100
Fix bug 9548: Correctly detect O_DIRECT
(cherry picked from commit c89f3ddd5db2de099e5b871d41553637d35e4097)
commit 5be19aca9d07397bc49f3539aa8d358f561430b0
Author: Jeremy Allison <jra at samba.org>
Date: Mon Jan 14 15:06:12 2013 -0800
lib/replace: Add missing check for sys/wait.h
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
(cherry picked from commit 8de4edd42cf16bd761a6acc2c8b5656d088969a7)
commit 68082b1fc0b23921dd0ffc86d07f3f37f09224ea
Author: Jeremy Allison <jra at samba.org>
Date: Tue Jan 15 10:16:27 2013 -0800
lib/replace: Add ucontext configure autoconf checks.
Signed-off-by: Jeremy Allison <jra at samba.org>
(cherry picked from commit d78f760280473c35b33d4f17d31528dd6269405a)
commit 5e1f60fbd3b7094d8790d3f089b3d38dd7490227
Author: Jeremy Allison <jra at samba.org>
Date: Mon Jan 14 15:21:52 2013 -0800
lib/replace: Include sys/ucontext.h if available.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
(cherry picked from commit 9a21bc35c565210767e71f4bc03a558fe61bdbc8)
commit afb78ae9c048079c933eb6f6e7adcaf1ad40e7c2
Author: Jeremy Allison <jra at samba.org>
Date: Mon Jan 14 15:22:11 2013 -0800
tevent: Fix bug 9550 - sigprocmask does not work on FreeBSD to stop further signals in a signal handler
Mask off signals the correct way from the signal handler.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
Autobuild-Date(master): Tue Jan 15 12:13:43 CET 2013 on sn-devel-104
(cherry picked from commit 64a29fdf0e3ec9138e946bab03ad28a965f3ebd0)
commit 5bbb6b6a6504ac03c8a8ce38b78f851d0f063129
Author: Volker Lendecke <vl at samba.org>
Date: Mon Jan 7 11:06:15 2013 +0100
configure: Fix bug 9546, aio_suspend detection on FreeBSD
NULL is not defined without some includes
(cherry picked from commit 653ebe132287ba66ef54675a3b58988994f0a486)
-----------------------------------------------------------------------
Summary of changes:
WHATSNEW.txt | 19 +++-
docs-xml/manpages-3/ntlm_auth.1.xml | 195 +++++++++++++++++++----------------
lib/replace/libreplace.m4 | 36 +++++--
lib/replace/system/wait.h | 4 +
lib/tevent/tevent_signal.c | 29 +++++
lib/util/debug.c | 2 +-
source3/configure.in | 2 +-
source3/smbd/smb2_create.c | 6 +-
8 files changed, 188 insertions(+), 105 deletions(-)
Changeset truncated at 500 lines:
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 9b7c8bb..6599766 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -8,12 +8,29 @@ This is is the latest stable release of Samba 3.6.
Major enhancements in Samba 3.6.11 include:
-o
+o defer_open is triggered multiple times on the same request (bug #9196).
+o Fix SEGV wh_n using second vfs module (bug #9471).
+
Changes since 3.6.10:
--------------------
o Jeremy Allison <jra at samba.org>
+ * BUG 9196: defer_open is triggered multiple times on the same request.
+ * BUG 9550: Mask off signals the correct way from the signal handler.
+
+
+o Björn Baumbach <bb at sernet.de>
+ * BUG 9569: ntlm_auth.1: Fix format and make examples visible.
+
+
+o Tsukasa Hamano <hamano at osstech.co.jp>
+ * BUG 9471: Fix SEGV when using second vfs module.
+
+
+o Volker Lendecke <vl at samba.org>
+ * BUG 9548: Correctly detect O_DIRECT.
+ * BUG 9546: Fix aio_suspend detection on FreeBSD.
######################################################################
diff --git a/docs-xml/manpages-3/ntlm_auth.1.xml b/docs-xml/manpages-3/ntlm_auth.1.xml
index dcf9b42..ffbbf05 100644
--- a/docs-xml/manpages-3/ntlm_auth.1.xml
+++ b/docs-xml/manpages-3/ntlm_auth.1.xml
@@ -160,111 +160,132 @@
external program to the helper are:</para>
<variablelist>
<varlistentry>
- <term>Username</term>
-
- <listitem><para>The username, expected to be in
- Samba's <smbconfoption name="unix charset"/>.
- </para>
-
- <para><example>Username: bob</example></para>
- <para><example>Username:: Ym9i</example></para>
- </listitem></varlistentry>
+ <term>Username</term>
+ <listitem><para>The username, expected to be in
+ Samba's <smbconfoption name="unix charset"/>.
+ </para>
+ <varlistentry>
+ <term>Examples:</term>
+ <para>Username: bob</para>
+ <para>Username:: Ym9i</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term>NT-Domain</term>
- <listitem><para>The user's domain, expected to be in
- Samba's <smbconfoption name="unix charset"/>.
- </para>
-
- <para><example>NT-Domain: WORKGROUP</example></para>
- <para><example>NT-Domain:: V09SS0dST1VQ</example></para>
- </listitem></varlistentry>
+ <term>NT-Domain</term>
+ <listitem><para>The user's domain, expected to be in
+ Samba's <smbconfoption name="unix charset"/>.
+ </para>
+
+ <varlistentry>
+ <term>Examples:</term>
+ <para>NT-Domain: WORKGROUP</para>
+ <para>NT-Domain:: V09SS0dST1VQ</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term>Full-Username</term>
- <listitem><para>The fully qualified username, expected to be in
- Samba's <smbconfoption name="unix charset"/> and qualified with the
- <smbconfoption name="winbind separator"/>.
- </para>
-
- <para><example>Full-Username: WORKGROUP\bob</example></para>
- <para><example>Full-Username:: V09SS0dST1VQYm9i</example></para>
- </listitem></varlistentry>
+ <term>Full-Username</term>
+ <listitem><para>The fully qualified username, expected to be
+ in Samba's <smbconfoption name="unix charset"/> and qualified
+ with the <smbconfoption name="winbind separator"/>.</para>
+ <varlistentry>
+ <term>Examples:</term>
+ <para>Full-Username: WORKGROUP\bob</para>
+ <para>Full-Username:: V09SS0dST1VQYm9i</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term>LANMAN-Challenge</term>
-
- <listitem><para>The 8 byte <command>LANMAN Challenge</command> value,
- generated randomly by the server, or (in cases such as
- MSCHAPv2) generated in some way by both the server and
- the client.
- </para>
- <para><example>LANMAN-Challenge: 0102030405060708</example></para>
- </listitem></varlistentry>
+ <term>LANMAN-Challenge</term>
+ <listitem><para>The 8 byte <command>LANMAN Challenge</command>
+ value, generated randomly by the server, or (in cases such
+ as MSCHAPv2) generated in some way by both the server and
+ the client.</para>
+ <varlistentry>
+ <term>Examples:</term>
+ <para>LANMAN-Challenge: 0102030405060708</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term>LANMAN-Response</term>
-
- <listitem><para>The 24 byte <command>LANMAN Response</command> value,
- calculated from the user's password and the supplied
- <command>LANMAN Challenge</command>. Typically, this
- is provided over the network by a client wishing to authenticate.
- </para>
- <para><example>LANMAN-Response: 0102030405060708090A0B0C0D0E0F101112131415161718</example></para>
-
- </listitem></varlistentry>
+ <term>LANMAN-Response</term>
+ <listitem><para>The 24 byte <command>LANMAN Response</command> value,
+ calculated from the user's password and the supplied
+ <command>LANMAN Challenge</command>. Typically, this
+ is provided over the network by a client wishing to authenticate.
+ </para>
+ <varlistentry>
+ <term>Examples:</term>
+ <para>LANMAN-Response: 0102030405060708090A0B0C0D0E0F101112131415161718</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term>NT-Response</term>
- <listitem><para>The >= 24 byte <command>NT Response</command>
- calculated from the user's password and the supplied
- <command>LANMAN Challenge</command>. Typically, this is
- provided over the network by a client wishing to authenticate.
- </para>
- <para><example>NT-Response: 0102030405060708090A0B0C0D0E0F101112131415161718</example></para>
-
- </listitem></varlistentry>
+ <term>NT-Response</term>
+ <listitem><para>The >= 24 byte <command>NT Response</command>
+ calculated from the user's password and the supplied
+ <command>LANMAN Challenge</command>. Typically, this is
+ provided over the network by a client wishing to authenticate.
+ </para>
+ <varlistentry>
+ <term>Examples:</term>
+ <para>NT-Response: 0102030405060708090A0B0C0D0E0F10111213141516171</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term>Password</term>
- <listitem><para>The user's password. This would be
- provided by a network client, if the helper is being
- used in a legacy situation that exposes plaintext
- passwords in this way.
- </para>
- <para><example>Password: samba2</example></para>
- <para><example>Password:: c2FtYmEy</example></para>
-
- </listitem></varlistentry>
+ <term>Password</term>
+ <listitem><para>The user's password. This would be
+ provided by a network client, if the helper is being
+ used in a legacy situation that exposes plaintext
+ passwords in this way.</para>
+ <varlistentry>
+ <term>Examples:</term>
+ <para>Password: samba2</para>
+ <para>Password:: c2FtYmEy</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term>Request-User-Session-Key</term>
- <listitem><para>Upon successful authenticaiton, return
- the user session key associated with the login.
- </para>
- <para><example>Request-User-Session-Key: Yes</example></para>
-
- </listitem></varlistentry>
+ <term>Request-User-Session-Key</term>
+ <listitem><para>Upon successful authenticaiton, return
+ the user session key associated with the login.</para>
+ <varlistentry>
+ <term>Examples:</term>
+ <para>Request-User-Session-Key: Yes</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term>Request-LanMan-Session-Key</term>
- <listitem><para>Upon successful authenticaiton, return
- the LANMAN session key associated with the login.
- </para>
- <para><example>Request-LanMan-Session-Key: Yes</example></para>
-
- </listitem></varlistentry>
-
- <para><warning>Implementers should take care to base64 encode
- any data (such as usernames/passwords) that may contain malicous user data, such as
- a newline. They may also need to decode strings from
- the helper, which likewise may have been base64 encoded.</warning></para>
- </variablelist>
-
+ <term>Request-LanMan-Session-Key</term>
+ <listitem><para>Upon successful authenticaiton, return
+ the LANMAN session key associated with the login.
+ </para>
+ <varlistentry>
+ <term>Examples:</term>
+ <para>Request-LanMan-Session-Key: Yes</para>
+ </varlistentry>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
</listitem>
</varlistentry>
- </variablelist>
- </listitem>
+ </variablelist>
+ <warning><para>Implementers should take care to base64 encode
+ any data (such as usernames/passwords) that may contain malicous user data, such as
+ a newline. They may also need to decode strings from
+ the helper, which likewise may have been base64 encoded.</para></warning>
+ </listitem>
</varlistentry>
<varlistentry>
diff --git a/lib/replace/libreplace.m4 b/lib/replace/libreplace.m4
index 808d5d1..67f8e3f 100644
--- a/lib/replace/libreplace.m4
+++ b/lib/replace/libreplace.m4
@@ -66,7 +66,7 @@ AC_FUNC_MEMCMP
AC_CHECK_FUNCS([pipe strftime srandom random srand rand usleep setbuffer lstat getpgrp utime utimes])
AC_CHECK_HEADERS(stdbool.h stdint.h sys/select.h)
-AC_CHECK_HEADERS(setjmp.h utime.h)
+AC_CHECK_HEADERS(setjmp.h utime.h sys/wait.h)
LIBREPLACE_PROVIDE_HEADER([stdint.h])
LIBREPLACE_PROVIDE_HEADER([stdbool.h])
@@ -105,6 +105,7 @@ AC_CHECK_HEADERS(stdarg.h vararg.h)
AC_CHECK_HEADERS(sys/mount.h mntent.h)
AC_CHECK_HEADERS(stropts.h)
AC_CHECK_HEADERS(unix.h)
+AC_CHECK_HEADERS(sys/ucontext.h)
AC_CHECK_FUNCS(seteuid setresuid setegid setresgid chroot bzero strerror strerror_r)
AC_CHECK_FUNCS(vsyslog setlinebuf mktime ftruncate chsize rename)
@@ -266,6 +267,16 @@ if test x"$libreplace_cv_sig_atomic_t" = x"yes"; then
fi
+dnl Check if the C compiler understands volatile (it should, being ANSI).
+AC_CACHE_CHECK([that the C compiler understands volatile],libreplace_cv_volatile, [
+ AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
+ libreplace_cv_volatile=yes,libreplace_cv_volatile=no)])
+if test x"$libreplace_cv_volatile" = x"yes"; then
+ AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
+fi
+
+m4_include(system/config.m4)
+
AC_CACHE_CHECK([for O_DIRECT flag to open(2)],libreplace_cv_HAVE_OPEN_O_DIRECT,[
AC_TRY_COMPILE([
#include <unistd.h>
@@ -278,17 +289,6 @@ if test x"$libreplace_cv_HAVE_OPEN_O_DIRECT" = x"yes"; then
AC_DEFINE(HAVE_OPEN_O_DIRECT,1,[Whether the open(2) accepts O_DIRECT])
fi
-
-dnl Check if the C compiler understands volatile (it should, being ANSI).
-AC_CACHE_CHECK([that the C compiler understands volatile],libreplace_cv_volatile, [
- AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
- libreplace_cv_volatile=yes,libreplace_cv_volatile=no)])
-if test x"$libreplace_cv_volatile" = x"yes"; then
- AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
-fi
-
-m4_include(system/config.m4)
-
m4_include(dlfcn.m4)
m4_include(getpass.m4)
m4_include(strptime.m4)
@@ -326,6 +326,18 @@ if test x"$libreplace_cv_struct_timespec" = x"yes"; then
AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
fi
+AC_CACHE_CHECK([for ucontext_t type],libreplace_cv_ucontext_t, [
+ AC_TRY_COMPILE([
+#include <signal.h>
+#if HAVE_SYS_UCONTEXT_H
+#include <sys/ucontext.h>
+# endif
+],[ucontext_t uc; sigaddset(&uc.uc_sigmask, SIGUSR1);],
+ libreplace_cv_ucontext_t=yes,libreplace_cv_ucontext_t=no)])
+if test x"$libreplace_cv_ucontext_t" = x"yes"; then
+ AC_DEFINE(HAVE_UCONTEXT_T,1,[Whether we have ucontext_t])
+fi
+
AC_CHECK_FUNCS([printf memset memcpy],,[AC_MSG_ERROR([Required function not found])])
echo "LIBREPLACE_BROKEN_CHECKS: END"
diff --git a/lib/replace/system/wait.h b/lib/replace/system/wait.h
index f0c3bdc..146c61a 100644
--- a/lib/replace/system/wait.h
+++ b/lib/replace/system/wait.h
@@ -40,6 +40,10 @@
#include <setjmp.h>
#endif
+#ifdef HAVE_SYS_UCONTEXT_H
+#include <sys/ucontext.h>
+#endif
+
#if !defined(HAVE_SIG_ATOMIC_T_TYPE)
typedef int sig_atomic_t;
#endif
diff --git a/lib/tevent/tevent_signal.c b/lib/tevent/tevent_signal.c
index b790859..cc7fb0a 100644
--- a/lib/tevent/tevent_signal.c
+++ b/lib/tevent/tevent_signal.c
@@ -122,10 +122,39 @@ static void tevent_common_signal_handler_info(int signum, siginfo_t *info,
if (count+1 == TEVENT_SA_INFO_QUEUE_COUNT) {
/* we've filled the info array - block this signal until
these ones are delivered */
+#ifdef HAVE_UCONTEXT_T
+ /*
+ * This is the only way for this to work.
+ * By default signum is blocked inside this
+ * signal handler using a temporary mask,
+ * but what we really need to do now is
+ * block it in the callers mask, so it
+ * stays blocked when the temporary signal
+ * handler mask is replaced when we return
+ * from here. The callers mask can be found
+ * in the ucontext_t passed in as the
+ * void *uctx argument.
+ */
+ ucontext_t *ucp = (ucontext_t *)uctx;
+ sigaddset(&ucp->uc_sigmask, signum);
+#else
+ /*
+ * WARNING !!! WARNING !!!!
+ *
+ * This code doesn't work.
+ * By default signum is blocked inside this
+ * signal handler, but calling sigprocmask
+ * modifies the temporary signal mask being
+ * used *inside* this handler, which will be
+ * replaced by the callers signal mask once
+ * we return from here. See Samba
+ * bug #9550 for details.
+ */
sigset_t set;
sigemptyset(&set);
sigaddset(&set, signum);
sigprocmask(SIG_BLOCK, &set, NULL);
+#endif
TEVENT_SIG_INCREMENT(sig_state->sig_blocked[signum]);
}
}
diff --git a/lib/util/debug.c b/lib/util/debug.c
index 108161e..efe6988 100644
--- a/lib/util/debug.c
+++ b/lib/util/debug.c
@@ -953,7 +953,7 @@ bool dbghdrclass(int level, int cls, const char *location, const char *func)
slprintf(header_str + hs_len,
sizeof(header_str) -1 - hs_len,
", class=%s",
- default_classname_table[cls]);
+ classname_table[cls]);
}
/* Print it all out at once to prevent split syslog output. */
diff --git a/source3/configure.in b/source3/configure.in
index a298183..0f805ee 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -5877,7 +5877,7 @@ int main() { struct aiocb a; return aio_cancel(1, &a); }],
AC_MSG_CHECKING(for aio_suspend)
AC_LINK_IFELSE([#include <aio.h>
-int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
+int main() { struct aiocb a; struct timespec t; return aio_suspend(&a, 1, &t); }],
[AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])
fi
diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c
index 5a9044d..5b81099 100644
--- a/source3/smbd/smb2_create.c
+++ b/source3/smbd/smb2_create.c
@@ -893,9 +893,6 @@ bool get_deferred_open_message_state_smb2(struct smbd_smb2_request *smb2req,
if (!smb2req) {
return false;
}
- if (!smb2req->async) {
- return false;
- }
req = smb2req->subreq;
if (!req) {
return false;
@@ -904,6 +901,9 @@ bool get_deferred_open_message_state_smb2(struct smbd_smb2_request *smb2req,
if (!state) {
return false;
}
+ if (!state->open_was_deferred) {
+ return false;
+ }
if (p_request_time) {
*p_request_time = state->request_time;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list