summaryrefslogtreecommitdiffstats
path: root/source3
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2013-10-23 11:02:39 +0200
committerStefan Metzmacher <metze@samba.org>2013-10-29 15:52:58 +0100
commit13d840ad2ff0db7320e0cbef86cd47872493292c (patch)
tree41f0d4aa405e984e68f32349ce26cfcf52f828eb /source3
parent9e723f9d69bbbaefd9e15399654668693854628b (diff)
downloadsamba-13d840ad2ff0db7320e0cbef86cd47872493292c.tar.gz
samba-13d840ad2ff0db7320e0cbef86cd47872493292c.tar.xz
samba-13d840ad2ff0db7320e0cbef86cd47872493292c.zip
s3-smbd_shim: Add become_authenticated_pipe_user().
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source3')
-rw-r--r--source3/include/proto.h5
-rw-r--r--source3/lib/smbd_shim.c18
-rw-r--r--source3/lib/smbd_shim.h2
-rw-r--r--source3/smbd/proto.h4
-rw-r--r--source3/smbd/server.c2
-rw-r--r--source3/smbd/uid.c4
6 files changed, 30 insertions, 5 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 497828e529..277547bef7 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1253,7 +1253,7 @@ bool ea_list_has_invalid_name(struct ea_list *ea_list);
void become_root(void);
void unbecome_root(void);
-/* The following definitions come from lib/dummysmbd.c */
+/* The following definitions come from lib/smbd_shim.c */
int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out);
void cancel_pending_lock_requests_by_fid(files_struct *fsp,
@@ -1263,6 +1263,9 @@ void send_stat_cache_delete_message(struct messaging_context *msg_ctx,
const char *name);
NTSTATUS can_delete_directory_fsp(files_struct *fsp);
bool change_to_root_user(void);
+bool become_authenticated_pipe_user(struct auth_session_info *session_info);
+bool unbecome_authenticated_pipe_user(void);
+
void contend_level2_oplocks_begin(files_struct *fsp,
enum level2_contention_type type);
void contend_level2_oplocks_end(files_struct *fsp,
diff --git a/source3/lib/smbd_shim.c b/source3/lib/smbd_shim.c
index d5ad577975..1b5b4e6ca5 100644
--- a/source3/lib/smbd_shim.c
+++ b/source3/lib/smbd_shim.c
@@ -58,6 +58,24 @@ bool change_to_root_user(void)
return false;
}
+bool become_authenticated_pipe_user(struct auth_session_info *session_info)
+{
+ if (shim.become_authenticated_pipe_user) {
+ return shim.become_authenticated_pipe_user(session_info);
+ }
+
+ return false;
+}
+
+bool unbecome_authenticated_pipe_user(void)
+{
+ if (shim.unbecome_authenticated_pipe_user) {
+ return shim.unbecome_authenticated_pipe_user();
+ }
+
+ return false;
+}
+
/**
* The following two functions need to be called from inside the low-level BRL
* code for oplocks correctness in smbd. Since other utility binaries also
diff --git a/source3/lib/smbd_shim.h b/source3/lib/smbd_shim.h
index 1645837f36..f3da585902 100644
--- a/source3/lib/smbd_shim.h
+++ b/source3/lib/smbd_shim.h
@@ -36,6 +36,8 @@ struct smbd_shim
const char *name);
bool (*change_to_root_user)(void);
+ bool (*become_authenticated_pipe_user)(struct auth_session_info *session_info);
+ bool (*unbecome_authenticated_pipe_user)(void);
void (*contend_level2_oplocks_begin)(files_struct *fsp,
enum level2_contention_type type);
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index d365545fe9..ea424f1e55 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -1103,8 +1103,8 @@ NTSTATUS check_user_share_access(connection_struct *conn,
bool change_to_user(connection_struct *conn, uint64_t vuid);
bool change_to_root_user(void);
bool smbd_change_to_root_user(void);
-bool become_authenticated_pipe_user(struct auth_session_info *session_info);
-bool unbecome_authenticated_pipe_user(void);
+bool smbd_become_authenticated_pipe_user(struct auth_session_info *session_info);
+bool smbd_unbecome_authenticated_pipe_user(void);
void become_root(void);
void unbecome_root(void);
void smbd_become_root(void);
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 8173a6294d..36be01948e 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -1058,6 +1058,8 @@ extern void build_options(bool screen);
.cancel_pending_lock_requests_by_fid = smbd_cancel_pending_lock_requests_by_fid,
.send_stat_cache_delete_message = smbd_send_stat_cache_delete_message,
.change_to_root_user = smbd_change_to_root_user,
+ .become_authenticated_pipe_user = smbd_become_authenticated_pipe_user,
+ .unbecome_authenticated_pipe_user = smbd_unbecome_authenticated_pipe_user,
.contend_level2_oplocks_begin = smbd_contend_level2_oplocks_begin,
.contend_level2_oplocks_end = smbd_contend_level2_oplocks_end,
diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c
index a795eef8af..5e09e6b43f 100644
--- a/source3/smbd/uid.c
+++ b/source3/smbd/uid.c
@@ -436,7 +436,7 @@ bool smbd_change_to_root_user(void)
user. Doesn't modify current_user.
****************************************************************************/
-bool become_authenticated_pipe_user(struct auth_session_info *session_info)
+bool smbd_become_authenticated_pipe_user(struct auth_session_info *session_info)
{
if (!push_sec_ctx())
return False;
@@ -455,7 +455,7 @@ bool become_authenticated_pipe_user(struct auth_session_info *session_info)
current_user.
****************************************************************************/
-bool unbecome_authenticated_pipe_user(void)
+bool smbd_unbecome_authenticated_pipe_user(void)
{
return pop_sec_ctx();
}