The branch, master has been updated
       via  5b5b696 Fix bug #8882 - Broken processing of %U with vfs_full_audit 
when force user is set.
       via  fbaaf4b Add complete test program for Linux kernel aio inside 
configure.in (I discovered yesterday there are systems with only half the glibc 
changes needed to implement userspace kaio.
      from  5960b7b s4-libnet Always return after composite_error()

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


- Log -----------------------------------------------------------------
commit 5b5b696c1e36dc7f81da24158e0853290084dec8
Author: Jeremy Allison <j...@samba.org>
Date:   Fri Apr 20 17:52:57 2012 -0700

    Fix bug #8882 - Broken processing of %U with vfs_full_audit when force user 
is set.
    
    When doing a "force user" we need to remember what the "sanitized_username"
    was from the original connect.
    
    Autobuild-User: Jeremy Allison <j...@samba.org>
    Autobuild-Date: Mon Apr 23 19:52:19 CEST 2012 on sn-devel-104

commit fbaaf4b21fd7253d333261ba925e8f40122335e8
Author: Jeremy Allison <j...@samba.org>
Date:   Fri Apr 20 15:53:55 2012 -0700

    Add complete test program for Linux kernel aio inside configure.in (I 
discovered yesterday there are systems with only half the glibc changes needed 
to implement userspace kaio.

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

Summary of changes:
 source3/configure.in   |   34 ++++++++++++++++++++++++++++------
 source3/smbd/service.c |   11 +++++++++++
 2 files changed, 39 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/configure.in b/source3/configure.in
index 35bbe28..56112e9 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -5545,12 +5545,34 @@ if test x"$samba_cv_HAVE_AIO" = x"yes"; then
 # Check for Linux kernel aio support.
        case "$host_os" in
        *linux*)
-           AC_MSG_CHECKING(for Linux kernel asynchronous io support)
-           AC_CHECK_LIB(aio,io_submit,
-               [AIO_LIBS="$LIBS -laio";
-               AC_DEFINE(HAVE_LINUX_KERNEL_AIO, 1, Define to 1 if there is 
support for Linux kernel asynchronous io)],
-               [])
-           if test x"$ac_cv_lib_aio_io_submit" = x"yes"; then
+           AC_CHECK_LIB(aio,io_submit,[AIO_LIBS="$LIBS -laio"])
+           AC_CACHE_CHECK([for Linux kernel asynchronous io 
support],samba_cv_HAVE_LINUX_KERNEL_AIO,[
+           aio_LIBS=$LIBS
+           LIBS=$AIO_LIBS
+           AC_TRY_LINK([#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/eventfd.h>
+#include <libaio.h>],
+[ struct io_event ioev;
+struct iocb *ioc;
+io_context_t ctx;
+struct timespec ts;
+int fd;
+char *buf;
+fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
+io_queue_init(128,&ctx);
+io_prep_pwrite(ioc, 1, buf, 1, 0);
+io_prep_pread(ioc, 1, buf, 1, 0);
+io_set_eventfd(ioc, fd);
+io_set_callback(ioc, (io_callback_t)(0));
+io_submit(ctx, 1, &ioc);
+io_getevents(ctx, 1, 1, &ioev, &ts);],
+samba_cv_HAVE_LINUX_KERNEL_AIO=yes,samba_cv_HAVE_LINUX_KERNEL_AIO=no)
+               LIBS=$aio_LIBS])
+           if test x"$samba_cv_HAVE_LINUX_KERNEL_AIO" = x"yes"; then
+               AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
                default_shared_modules="$default_shared_modules vfs_aio_linux"
            fi
             ;;
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index 914cec8..6a2df18 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -439,6 +439,7 @@ NTSTATUS set_conn_force_user_group(connection_struct *conn, 
int snum)
                 */
 
                char *fuser;
+               char *sanitized_username;
                struct auth_session_info *forced_serverinfo;
                bool guest;
 
@@ -458,6 +459,16 @@ NTSTATUS set_conn_force_user_group(connection_struct 
*conn, int snum)
                        return status;
                }
 
+               /* We don't want to replace the original sanitized_username
+                  as it is the original user given in the connect attempt.
+                  This is used in '%U' substitutions. */
+               sanitized_username = discard_const_p(char,
+                       forced_serverinfo->unix_info->sanitized_username);
+               TALLOC_FREE(sanitized_username);
+               forced_serverinfo->unix_info->sanitized_username =
+                       talloc_move(forced_serverinfo->unix_info,
+                               
&conn->session_info->unix_info->sanitized_username);
+
                TALLOC_FREE(conn->session_info);
                conn->session_info = forced_serverinfo;
 


-- 
Samba Shared Repository

Reply via email to