]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Fix bug #8882 - Broken processing of %U with vfs_full_audit when force user is set.
authorJeremy Allison <jra@samba.org>
Sat, 21 Apr 2012 00:52:57 +0000 (17:52 -0700)
committerJeremy Allison <jra@samba.org>
Mon, 23 Apr 2012 17:52:19 +0000 (19:52 +0200)
When doing a "force user" we need to remember what the "sanitized_username"
was from the original connect.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Mon Apr 23 19:52:19 CEST 2012 on sn-devel-104

source3/smbd/service.c

index 914cec86d8d87eca0e6d70b1417ba8ba0c449e5d..6a2df18ce0242de20b19704f777a4151f5fb5e24 100644 (file)
@@ -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;