The branch, master has been updated via 42cf3f4f007 lib: Fix a typo via 621ceafe7f1 vfs: Modernize a DEBUG statement via aa377c7fd78 smbd: Modernize a DEBUG statement via 09708226998 rpc_server3: Inline single-use rpcint_binding_handle_ex() via bad374ae66d rpc_server3: Inline pipes_struct into dcerpc_ncacn_conn via 55cdb61269f rpc_server3: Remove dcerpc_ncacn_conn->session_info via 79024fa681f rpc_server3: Remove dcerpc_ncacn_conn->local_server_addr via 10478d39a1c rpc_server3: Remove dcerpc_ncacn_conn->remote_client_addr via 7c5b247e314 rpc_server3: Remove dcerpc_ncacn_conn->tstream via 0d315ddbfe9 rpc_server3: Remove dcerpc_ncacn_conn->dce_ctx via 909e309414f rpc_server3: Remove dcerpc_ncacn_conn->msg_ctx via 7d92880fbf4 rpc_server3: dcerpc_ncacn_conn->ev_ctx was only set but never used via 0eed31db6c3 winbind: Don't transfer a pointer that's NULL anyway via 0cae08f2988 rpc_server3: No linked list for pipes_struct anymore via 0a7ecf1880a rpc_server3: Remove pipes_struct->auth via 8379d8cd532 rpc_server3: Remove pipes_struct->session_info via 716727c020f rpc_server3: Remove pipes_struct->pipe_bound via cdc18db7e2b rpc_server3: Inline make_base_pipes_struct() via 640f4403c65 rpc_server3: Remove pipes_struct->remote_address via 5a0155fb51d rpc_server3: Remove pipes_struct->local_address via 2777fde6a1a rpc_server3: Inline make_base_pipes_struct() into rpc_worker.c via 0f9f1fa0c26 rpc_server3: Inline make_internal_ncacn_conn() into rpc_worker.c via 22176770ad2 smbd: Avoid a DEBUGADD statement via 25aa7243fb2 Remove some unused code via c7e36be5da5 lib: Avoid a cast via d60f583245a smbd: Avoid some casts via 9a2f5a52e8c smbd: Remove an unneeded anonymous struct declaration via 6c64e698f03 smbd: Move fast_string_hash() to mangle_hash.c, the only user via 5ce8b395ec4 smbd: Fix a few typos via d0b61ecd74c smbd: Save a few lines by using cp_smb_filename_nostream() from dd988610051 auth/ntlmssp: make sure we return INVALID_PARAMETER for NTLMv2_RESPONSE parsing errors
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 42cf3f4f0079549b99d6cdecdc741654ff7844d6 Author: Volker Lendecke <v...@samba.org> Date: Thu Dec 23 13:24:27 2021 +0100 lib: Fix a typo Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Wed Jan 5 01:02:38 UTC 2022 on sn-devel-184 commit 621ceafe7f1ff1148b8ca3249a25f57c62a17c97 Author: Volker Lendecke <v...@samba.org> Date: Tue Dec 21 12:54:56 2021 +0100 vfs: Modernize a DEBUG statement Fix the function name printed Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit aa377c7fd788585ac359c2a61066b7ffe90d8883 Author: Volker Lendecke <v...@samba.org> Date: Sun Dec 19 11:02:46 2021 +0100 smbd: Modernize a DEBUG statement Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0970822699804dad44dba02513f47d875cf54d8d Author: Volker Lendecke <v...@samba.org> Date: Thu Oct 7 14:52:47 2021 +0200 rpc_server3: Inline single-use rpcint_binding_handle_ex() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit bad374ae66d795f971153c5561067b26c45e1c7b Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 12:20:17 2021 +0200 rpc_server3: Inline pipes_struct into dcerpc_ncacn_conn This makes it clear that our internal representation of a rpc client connection in the source3/ server is struct dcerpc_ncacn_conn and that struct pipes_struct is only around for API compatibility with the existing server stubs. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 55cdb61269f828be13186060b35c9be742a22fa0 Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 11:16:21 2021 +0200 rpc_server3: Remove dcerpc_ncacn_conn->session_info This was only used inside rpc_worker_new_client(), a leftover from times where accepting a client was an async process waiting for the struct named_pipe_auth_req_info4. The talloc hierarchy is correctly maintained, dcesrv_endpoint_connect() takes a talloc_reference() of session_info. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 79024fa681f3d64d21db80abc23ef6b8c238750a Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 11:16:21 2021 +0200 rpc_server3: Remove dcerpc_ncacn_conn->local_server_addr This was only used inside rpc_worker_new_client(), a leftover from times where accepting a client was an async process waiting for the struct named_pipe_auth_req_info4. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 10478d39a1c028a79991a91984243f8d9d063045 Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 11:16:21 2021 +0200 rpc_server3: Remove dcerpc_ncacn_conn->remote_client_addr This was only used inside rpc_worker_new_client(), a leftover from times where accepting a client was an async process waiting for the struct named_pipe_auth_req_info4. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 7c5b247e31484862edd394072e25c7154b890d8b Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 11:16:21 2021 +0200 rpc_server3: Remove dcerpc_ncacn_conn->tstream This was only used inside rpc_worker_new_client(), a leftover from times where accepting a client was an async process waiting for the struct named_pipe_auth_req_info4. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0d315ddbfe919898d75284c9aefce5ed56cf6ca8 Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 11:16:21 2021 +0200 rpc_server3: Remove dcerpc_ncacn_conn->dce_ctx This was only used inside rpc_worker_new_client(), a leftover from times where accepting a client was an async process waiting for the struct named_pipe_auth_req_info4. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 909e309414fcc6926f8b574ac8247f837befb32a Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 11:16:21 2021 +0200 rpc_server3: Remove dcerpc_ncacn_conn->msg_ctx This was only used inside rpc_worker_new_client(), a leftover from times where accepting a client was an async process waiting for the struct named_pipe_auth_req_info4. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 7d92880fbf42e77a4193c7ff5ab2a22a0a65a79c Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 11:14:30 2021 +0200 rpc_server3: dcerpc_ncacn_conn->ev_ctx was only set but never used Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0eed31db6c327eaedc984ff5aab32afeea8a144a Author: Volker Lendecke <v...@samba.org> Date: Fri Oct 1 16:28:57 2021 +0200 winbind: Don't transfer a pointer that's NULL anyway ncacn_conn was created by make_internal_ncacn_conn with talloc_zero(), and that does not set session_info for the purely one-shot connection state in winbindd_dual_ndrcmd(). Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0cae08f298856af10959a031794155946a4e778c Author: Volker Lendecke <v...@samba.org> Date: Wed Oct 6 11:39:21 2021 +0200 rpc_server3: No linked list for pipes_struct anymore Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0a7ecf1880a8d3191a142ed5d18d57fbe858f86c Author: Volker Lendecke <v...@samba.org> Date: Mon Oct 4 13:50:02 2021 +0200 rpc_server3: Remove pipes_struct->auth Replace with a call to dcesrv_call_auth_info(p->dce_call) Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 8379d8cd532be9540cd61332923b76197ddb1e2c Author: Volker Lendecke <v...@samba.org> Date: Mon Oct 4 13:40:02 2021 +0200 rpc_server3: Remove pipes_struct->session_info This is a big patch, but all it does is replace all "p->session_info" with "session_info" after introducing a local variable from dcesrv_call_session_info(p->dce_call). Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 716727c020fefa8f5efe2e68814eb979e1bb5e22 Author: Volker Lendecke <v...@samba.org> Date: Mon Oct 4 12:49:56 2021 +0200 rpc_server3: Remove pipes_struct->pipe_bound Only used in pipe_access_check(), superseded by dcesrv_call_auth_info() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit cdc18db7e2b43a52da1b7f038be7ae4483f81d04 Author: Volker Lendecke <v...@samba.org> Date: Mon Oct 4 12:37:30 2021 +0200 rpc_server3: Inline make_base_pipes_struct() This did not even use all its arguments anymore. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 640f4403c65f3d07551127c1fe6ce8f9ed2b6785 Author: Volker Lendecke <v...@samba.org> Date: Mon Oct 4 12:26:18 2021 +0200 rpc_server3: Remove pipes_struct->remote_address Also available via dcesrv_connection_get_remote_address(p->dce_call->conn) Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 5a0155fb51dff6ce9f874f29ca847aebf349108d Author: Volker Lendecke <v...@samba.org> Date: Mon Oct 4 12:19:57 2021 +0200 rpc_server3: Remove pipes_struct->local_address Also available via dcesrv_connection_get_local_address(p->dce_call->conn) Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 2777fde6a1a7d6b6683712b08f21d156080e97e3 Author: Volker Lendecke <v...@samba.org> Date: Mon Oct 4 12:03:55 2021 +0200 rpc_server3: Inline make_base_pipes_struct() into rpc_worker.c This is the only user, and in winbind_dual_ndr.c's make_internal_ncacn_conn we have another creator of pipes_struct. So it seems not necessary to keep this public. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0f9f1fa0c26c065984d32426c1e55f88e7bcaced Author: Volker Lendecke <v...@samba.org> Date: Tue Sep 28 13:26:18 2021 +0200 rpc_server3: Inline make_internal_ncacn_conn() into rpc_worker.c This was the only user, and as we have another custom version in winbind with make_internal_ncacn_conn(), I think this is not really required to keep around as a separate function. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 22176770ad2257319dd0a8b9c265b42de1d06122 Author: Volker Lendecke <v...@samba.org> Date: Tue Dec 21 17:12:55 2021 +0100 smbd: Avoid a DEBUGADD statement Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 25aa7243fb238f910ba52fc084d94f3430811ead Author: Volker Lendecke <v...@samba.org> Date: Tue Oct 12 12:06:20 2021 +0200 Remove some unused code I think that if we want to work on asn1 routines we should use libtasn1. We already depend on this via gnutls these days. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit c7e36be5da5f09d03689c23e2a91d79a011e9204 Author: Volker Lendecke <v...@samba.org> Date: Mon Dec 27 11:25:34 2021 +0100 lib: Avoid a cast Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d60f583245a9847e791a42c25286f2200662fc8d Author: Volker Lendecke <v...@samba.org> Date: Wed Nov 24 12:28:34 2021 +0100 smbd: Avoid some casts Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 9a2f5a52e8c534ae9d70ceaa5ea697237480fab0 Author: Volker Lendecke <v...@samba.org> Date: Fri Nov 26 16:36:25 2021 +0100 smbd: Remove an unneeded anonymous struct declaration Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 6c64e698f036d2028c3273939c2ebbeb3c74485c Author: Volker Lendecke <v...@samba.org> Date: Fri Nov 26 16:35:44 2021 +0100 smbd: Move fast_string_hash() to mangle_hash.c, the only user Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 5ce8b395ec4bebb441fb568769cf6b91a94c1dd4 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 25 16:52:41 2021 +0100 smbd: Fix a few typos Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d0b61ecd74c2d564ca38a6e84c3c8dae81a1ddb7 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 25 15:37:00 2021 +0100 smbd: Save a few lines by using cp_smb_filename_nostream() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/util/util_net.c | 2 +- pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm | 19 +- source3/lib/filename_util.c | 3 +- source3/modules/vfs_fake_acls.c | 2 +- source3/modules/vfs_streams_xattr.c | 5 +- source3/rpc_server/dfs/srv_dfs_nt.c | 60 +++- source3/rpc_server/epmapper/srv_epmapper.c | 20 +- source3/rpc_server/eventlog/srv_eventlog_nt.c | 7 +- source3/rpc_server/fss/srv_fss_agent.c | 38 ++- source3/rpc_server/lsa/srv_lsa_nt.c | 126 +++++--- source3/rpc_server/mdssvc/srv_mdssvc_nt.c | 10 +- source3/rpc_server/netlogon/srv_netlog_nt.c | 69 ++++- source3/rpc_server/ntsvcs/srv_ntsvcs_nt.c | 6 +- source3/rpc_server/rpc_handles.c | 56 +--- source3/rpc_server/rpc_ncacn_np.c | 60 ++-- source3/rpc_server/rpc_pipes.h | 21 -- source3/rpc_server/rpc_server.c | 31 +- source3/rpc_server/rpc_server.h | 21 +- source3/rpc_server/rpc_worker.c | 69 ++--- source3/rpc_server/samr/srv_samr_nt.c | 148 ++++++--- source3/rpc_server/spoolss/srv_iremotewinspool.c | 20 +- source3/rpc_server/spoolss/srv_spoolss_nt.c | 140 ++++++--- source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 107 +++++-- source3/rpc_server/svcctl/srv_svcctl_nt.c | 35 ++- source3/rpc_server/winreg/srv_winreg_nt.c | 18 +- source3/rpc_server/wkssvc/srv_wkssvc_nt.c | 35 ++- source3/smbd/filename.c | 19 +- source3/smbd/files.c | 2 +- source3/smbd/mangle_hash.c | 16 + source3/smbd/open.c | 42 +-- source3/smbd/proto.h | 2 - source3/smbd/statcache.c | 16 - source3/smbd/trans2.c | 17 +- source3/winbindd/winbindd_dual_ndr.c | 13 +- source3/winbindd/winbindd_dual_srv.c | 11 +- source4/build/pasn1/Makefile | 5 - source4/build/pasn1/asn1.yp | 306 ------------------ source4/build/pasn1/pasn1.pl | 93 ------ source4/build/pasn1/util.pm | 379 ----------------------- 39 files changed, 752 insertions(+), 1297 deletions(-) delete mode 100644 source4/build/pasn1/Makefile delete mode 100644 source4/build/pasn1/asn1.yp delete mode 100755 source4/build/pasn1/pasn1.pl delete mode 100644 source4/build/pasn1/util.pm Changeset truncated at 500 lines: diff --git a/lib/util/util_net.c b/lib/util/util_net.c index fe474dc16be..a0032cca22f 100644 --- a/lib/util/util_net.c +++ b/lib/util/util_net.c @@ -365,7 +365,7 @@ uint32_t interpret_addr(const char *str) ret = dest.s_addr; /* NETWORK BYTE ORDER ! */ } else { /* Otherwise assume it's a network name of some sort and use - getadddrinfo. */ + getaddrinfo. */ struct addrinfo *res = NULL; struct addrinfo *res_list = NULL; if (!interpret_string_addr_internal(&res_list, diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm index 9ea70a3af93..be275cc9109 100644 --- a/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm +++ b/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm @@ -226,11 +226,6 @@ sub boilerplate_iface($) $self->pidl("static NTSTATUS $name\__op_bind(struct dcesrv_connection_context *context, const struct dcesrv_interface *iface)"); $self->pidl("{"); $self->indent(); - $self->pidl("struct pipes_struct *p = NULL;"); - $self->pidl(""); - $self->pidl("/* Retrieve pipes struct */"); - $self->pidl("p = dcesrv_get_pipes_struct(context->conn);"); - $self->pidl("p->pipe_bound = true;"); $self->pidlnoindent("#ifdef DCESRV_INTERFACE_$uname\_BIND"); $self->pidl("return DCESRV_INTERFACE_$uname\_BIND(context,iface);"); $self->pidlnoindent("#else"); @@ -290,7 +285,6 @@ sub boilerplate_iface($) $self->indent(); $self->pidl("uint16_t opnum = dce_call->pkt.u.request.opnum;"); $self->pidl("struct pipes_struct *p = NULL;"); - $self->pidl("struct auth_session_info *pipe_session_info = NULL;"); $self->pidl("NTSTATUS status = NT_STATUS_OK;"); $self->pidl("bool impersonated = false;"); $self->pidl(""); @@ -298,12 +292,6 @@ sub boilerplate_iface($) $self->pidl("p = dcesrv_get_pipes_struct(dce_call->conn);"); $self->pidl("p->dce_call = dce_call;"); $self->pidl("p->mem_ctx = mem_ctx;"); - $self->pidl("/* Update pipes struct session info */"); - $self->pidl("pipe_session_info = p->session_info;"); - $self->pidl("p->session_info = dce_call->auth_state->session_info;"); - $self->pidl("p->auth.auth_type = dce_call->auth_state->auth_type;"); - $self->pidl("p->auth.auth_level = dce_call->auth_state->auth_level;"); - $self->pidl("p->auth.auth_context_id = dce_call->auth_state->auth_context_id;"); $self->pidl("/* Reset pipes struct fault state */"); $self->pidl("p->fault_state = 0;"); $self->pidl(""); @@ -311,7 +299,7 @@ sub boilerplate_iface($) $self->pidl("/* Impersonate */"); $self->pidl("if (dispatch == S3COMPAT_RPC_DISPATCH_EXTERNAL) {"); $self->indent(); - $self->pidl("impersonated = become_authenticated_pipe_user(p->session_info);"); + $self->pidl("impersonated = become_authenticated_pipe_user(dce_call->auth_state->session_info);"); $self->pidl("if (!impersonated) {"); $self->indent(); $self->pidl("dce_call->fault_code = DCERPC_FAULT_ACCESS_DENIED;"); @@ -344,11 +332,6 @@ sub boilerplate_iface($) $self->pidl("p->dce_call = NULL;"); $self->pidl("p->mem_ctx = NULL;"); - $self->pidl("/* Restore session info */"); - $self->pidl("p->session_info = pipe_session_info;"); - $self->pidl("p->auth.auth_type = 0;"); - $self->pidl("p->auth.auth_level = 0;"); - $self->pidl("p->auth.auth_context_id = 0;"); $self->pidl("/* Check pipes struct fault state */"); $self->pidl("if (p->fault_state != 0) {"); $self->indent(); diff --git a/source3/lib/filename_util.c b/source3/lib/filename_util.c index f2ef0fbb074..ca4d77713ad 100644 --- a/source3/lib/filename_util.c +++ b/source3/lib/filename_util.c @@ -208,8 +208,7 @@ const char *fsp_fnum_dbg(const struct files_struct *fsp) return "fnum [invalid value]"; } - str = talloc_asprintf(talloc_tos(), "fnum %llu", - (unsigned long long)fsp->fnum); + str = talloc_asprintf(talloc_tos(), "fnum %"PRIu64, fsp->fnum); if (str == NULL) { DEBUG(1, ("%s: talloc_asprintf failed\n", __FUNCTION__)); return "fnum [talloc failed!]"; diff --git a/source3/modules/vfs_fake_acls.c b/source3/modules/vfs_fake_acls.c index f7b6e3ba220..441e22ea3f6 100644 --- a/source3/modules/vfs_fake_acls.c +++ b/source3/modules/vfs_fake_acls.c @@ -668,7 +668,7 @@ static int fake_acls_connect(struct vfs_handle_struct *handle, } /* * Create a struct can tell us if we're recursing - * into open_pathref_fsp() in this module. This will + * into openat_pathref_fsp() in this module. This will * go away once we have SMB_VFS_STATX() and we will * have a way for a caller to as for specific stat * fields in a granular way. Then we will know exactly diff --git a/source3/modules/vfs_streams_xattr.c b/source3/modules/vfs_streams_xattr.c index 76b23c7224f..682d492fee3 100644 --- a/source3/modules/vfs_streams_xattr.c +++ b/source3/modules/vfs_streams_xattr.c @@ -330,8 +330,9 @@ static int streams_xattr_openat(struct vfs_handle_struct *handle, SMB_VFS_HANDLE_GET_DATA(handle, config, struct streams_xattr_config, return -1); - DEBUG(10, ("streams_xattr_open called for %s with flags 0x%x\n", - smb_fname_str_dbg(smb_fname), flags)); + DBG_DEBUG("called for %s with flags 0x%x\n", + smb_fname_str_dbg(smb_fname), + flags); if (!is_named_stream(smb_fname)) { return SMB_VFS_NEXT_OPENAT(handle, diff --git a/source3/rpc_server/dfs/srv_dfs_nt.c b/source3/rpc_server/dfs/srv_dfs_nt.c index 4821bea2457..b69f7025191 100644 --- a/source3/rpc_server/dfs/srv_dfs_nt.c +++ b/source3/rpc_server/dfs/srv_dfs_nt.c @@ -23,6 +23,7 @@ #include "includes.h" #include "ntdomain.h" +#include "librpc/rpc/dcesrv_core.h" #include "librpc/gen_ndr/ndr_dfs.h" #include "librpc/gen_ndr/ndr_dfs_scompat.h" #include "msdfs.h" @@ -47,6 +48,14 @@ void _dfs_GetManagerVersion(struct pipes_struct *p, struct dfs_GetManagerVersion WERROR _dfs_Add(struct pipes_struct *p, struct dfs_Add *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct dcesrv_connection *dcesrv_conn = dce_call->conn; + const struct tsocket_address *local_address = + dcesrv_connection_get_local_address(dcesrv_conn); + const struct tsocket_address *remote_address = + dcesrv_connection_get_remote_address(dcesrv_conn); + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); struct junction_map *jn = NULL; struct referral *old_referral_list = NULL; bool self_ref = False; @@ -55,7 +64,7 @@ WERROR _dfs_Add(struct pipes_struct *p, struct dfs_Add *r) NTSTATUS status; TALLOC_CTX *ctx = talloc_tos(); - if (p->session_info->unix_token->uid != sec_initial_uid()) { + if (session_info->unix_token->uid != sec_initial_uid()) { DEBUG(10,("_dfs_add: uid != 0. Access denied.\n")); return WERR_ACCESS_DENIED; } @@ -77,10 +86,10 @@ WERROR _dfs_Add(struct pipes_struct *p, struct dfs_Add *r) /* The following call can change the cwd. */ status = get_referred_path(ctx, - p->session_info, + session_info, r->in.path, - p->remote_address, - p->local_address, + remote_address, + local_address, true, /*allow_broken_path */ jn, &consumedcnt, &self_ref); if(!NT_STATUS_IS_OK(status)) { @@ -109,7 +118,7 @@ WERROR _dfs_Add(struct pipes_struct *p, struct dfs_Add *r) jn->referral_list[jn->referral_count-1].ttl = REFERRAL_TTL; jn->referral_list[jn->referral_count-1].alternate_path = altpath; - if(!create_msdfs_link(jn, p->session_info)) { + if (!create_msdfs_link(jn, session_info)) { return WERR_NERR_DFSCANTCREATEJUNCTIONPOINT; } @@ -118,6 +127,14 @@ WERROR _dfs_Add(struct pipes_struct *p, struct dfs_Add *r) WERROR _dfs_Remove(struct pipes_struct *p, struct dfs_Remove *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct dcesrv_connection *dcesrv_conn = dce_call->conn; + const struct tsocket_address *local_address = + dcesrv_connection_get_local_address(dcesrv_conn); + const struct tsocket_address *remote_address = + dcesrv_connection_get_remote_address(dcesrv_conn); + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); struct junction_map *jn = NULL; bool self_ref = False; int consumedcnt = 0; @@ -126,7 +143,7 @@ WERROR _dfs_Remove(struct pipes_struct *p, struct dfs_Remove *r) char *altpath = NULL; NTSTATUS status; - if (p->session_info->unix_token->uid != sec_initial_uid()) { + if (session_info->unix_token->uid != sec_initial_uid()) { DEBUG(10,("_dfs_remove: uid != 0. Access denied.\n")); return WERR_ACCESS_DENIED; } @@ -151,10 +168,10 @@ WERROR _dfs_Remove(struct pipes_struct *p, struct dfs_Remove *r) } status = get_referred_path(ctx, - p->session_info, + session_info, r->in.dfs_entry_path, - p->remote_address, - p->local_address, + remote_address, + local_address, true, /*allow_broken_path */ jn, &consumedcnt, &self_ref); if(!NT_STATUS_IS_OK(status)) { @@ -163,7 +180,7 @@ WERROR _dfs_Remove(struct pipes_struct *p, struct dfs_Remove *r) /* if no server-share pair given, remove the msdfs link completely */ if(!r->in.servername && !r->in.sharename) { - if(!remove_msdfs_link(jn, p->session_info)) { + if(!remove_msdfs_link(jn, session_info)) { return WERR_NERR_DFSNOSUCHVOLUME; } } else { @@ -194,11 +211,11 @@ WERROR _dfs_Remove(struct pipes_struct *p, struct dfs_Remove *r) /* Only one referral, remove it */ if(jn->referral_count == 1) { - if(!remove_msdfs_link(jn, p->session_info)) { + if(!remove_msdfs_link(jn, session_info)) { return WERR_NERR_DFSNOSUCHVOLUME; } } else { - if(!create_msdfs_link(jn, p->session_info)) { + if(!create_msdfs_link(jn, session_info)) { return WERR_NERR_DFSCANTCREATEJUNCTIONPOINT; } } @@ -291,12 +308,15 @@ static bool init_reply_dfs_info_100(TALLOC_CTX *mem_ctx, struct junction_map* j, WERROR _dfs_Enum(struct pipes_struct *p, struct dfs_Enum *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); struct junction_map *jn = NULL; size_t num_jn = 0; size_t i; TALLOC_CTX *ctx = talloc_tos(); - jn = enum_msdfs_links(ctx, p->session_info, &num_jn); + jn = enum_msdfs_links(ctx, session_info, &num_jn); if (!jn || num_jn == 0) { num_jn = 0; jn = NULL; @@ -364,6 +384,14 @@ WERROR _dfs_Enum(struct pipes_struct *p, struct dfs_Enum *r) WERROR _dfs_GetInfo(struct pipes_struct *p, struct dfs_GetInfo *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct dcesrv_connection *dcesrv_conn = dce_call->conn; + const struct tsocket_address *local_address = + dcesrv_connection_get_local_address(dcesrv_conn); + const struct tsocket_address *remote_address = + dcesrv_connection_get_remote_address(dcesrv_conn); + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); int consumedcnt = strlen(r->in.dfs_entry_path); struct junction_map *jn = NULL; bool self_ref = False; @@ -385,10 +413,10 @@ WERROR _dfs_GetInfo(struct pipes_struct *p, struct dfs_GetInfo *r) /* The following call can change the cwd. */ status = get_referred_path(ctx, - p->session_info, + session_info, r->in.dfs_entry_path, - p->remote_address, - p->local_address, + remote_address, + local_address, true, /*allow_broken_path */ jn, &consumedcnt, &self_ref); if(!NT_STATUS_IS_OK(status) || diff --git a/source3/rpc_server/epmapper/srv_epmapper.c b/source3/rpc_server/epmapper/srv_epmapper.c index b2b8935af15..64f53cb4998 100644 --- a/source3/rpc_server/epmapper/srv_epmapper.c +++ b/source3/rpc_server/epmapper/srv_epmapper.c @@ -286,6 +286,8 @@ error_status_t _epm_Delete(struct pipes_struct *p, error_status_t _epm_Lookup(struct pipes_struct *p, struct epm_Lookup *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct dcesrv_connection *dcesrv_conn = dce_call->conn; struct policy_handle *entry_handle; struct rpc_eps *eps; TALLOC_CTX *tmp_ctx; @@ -310,6 +312,8 @@ error_status_t _epm_Lookup(struct pipes_struct *p, if (r->in.entry_handle == NULL || ndr_policy_handle_empty(r->in.entry_handle)) { + const struct tsocket_address *local_address = + dcesrv_connection_get_local_address(dcesrv_conn); char *srv_addr = NULL; DEBUG(7, ("_epm_Lookup: No entry_handle found, creating it.\n")); @@ -320,11 +324,11 @@ error_status_t _epm_Lookup(struct pipes_struct *p, goto done; } - if (p->local_address != NULL && - tsocket_address_is_inet(p->local_address, "ipv4")) + if (local_address != NULL && + tsocket_address_is_inet(local_address, "ipv4")) { - srv_addr = tsocket_address_inet_addr_string(p->local_address, - tmp_ctx); + srv_addr = tsocket_address_inet_addr_string( + local_address, tmp_ctx); } switch (r->in.inquiry_type) { @@ -740,6 +744,8 @@ fail: error_status_t _epm_Map(struct pipes_struct *p, struct epm_Map *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct dcesrv_connection *dcesrv_conn = dce_call->conn; struct policy_handle *entry_handle; enum dcerpc_transport_t transport; struct ndr_syntax_id ifid; @@ -818,6 +824,8 @@ error_status_t _epm_Map(struct pipes_struct *p, if (r->in.entry_handle == NULL || ndr_policy_handle_empty(r->in.entry_handle)) { + const struct tsocket_address *local_addr = + dcesrv_connection_get_local_address(dcesrv_conn); char *local_address = NULL; struct ndr_syntax_id_buf buf; char *if_string = NULL; @@ -837,14 +845,14 @@ error_status_t _epm_Map(struct pipes_struct *p, DBG_INFO("Mapping interface %s\n", if_string); if ((transport == NCACN_IP_TCP) && - tsocket_address_is_inet(p->local_address, "ip")) { + tsocket_address_is_inet(local_addr, "ip")) { /* * We don't have the host ip in the epm * database. For NCACN_IP_TCP, add the IP that * the client connected to. */ local_address = tsocket_address_inet_addr_string( - p->local_address, tmp_ctx); + local_addr, tmp_ctx); } eps = epm_map_get_towers( diff --git a/source3/rpc_server/eventlog/srv_eventlog_nt.c b/source3/rpc_server/eventlog/srv_eventlog_nt.c index a3e602a2710..5c82417dcac 100644 --- a/source3/rpc_server/eventlog/srv_eventlog_nt.c +++ b/source3/rpc_server/eventlog/srv_eventlog_nt.c @@ -288,6 +288,9 @@ static bool get_oldest_entry_hook( EVENTLOG_INFO * info ) static NTSTATUS elog_open( struct pipes_struct * p, const char *logname, struct policy_handle *hnd ) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); EVENTLOG_INFO *elog; /* first thing is to validate the eventlog name */ @@ -321,7 +324,7 @@ static NTSTATUS elog_open( struct pipes_struct * p, const char *logname, struct elog->logname = talloc_strdup( elog, ELOG_APPL ); /* do the access check */ - if ( !elog_check_access( elog, p->session_info) ) { + if ( !elog_check_access( elog, session_info) ) { TALLOC_FREE( elog ); return NT_STATUS_ACCESS_DENIED; } @@ -339,7 +342,7 @@ static NTSTATUS elog_open( struct pipes_struct * p, const char *logname, struct /* now do the access check. Close the tdb if we fail here */ - if ( !elog_check_access( elog, p->session_info) ) { + if ( !elog_check_access( elog, session_info) ) { TALLOC_FREE( elog ); return NT_STATUS_ACCESS_DENIED; } diff --git a/source3/rpc_server/fss/srv_fss_agent.c b/source3/rpc_server/fss/srv_fss_agent.c index 0f25bf17188..4de600fd06c 100644 --- a/source3/rpc_server/fss/srv_fss_agent.c +++ b/source3/rpc_server/fss/srv_fss_agent.c @@ -438,22 +438,26 @@ static NTSTATUS srv_fssa_start(struct messaging_context *msg_ctx) */ static bool fss_permitted(struct pipes_struct *p) { - if (p->session_info->unix_token->uid == sec_initial_uid()) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); + + if (session_info->unix_token->uid == sec_initial_uid()) { DEBUG(6, ("Granting FSRVP op, user started smbd\n")); return true; } if (nt_token_check_sid(&global_sid_Builtin_Administrators, - p->session_info->security_token)) { + session_info->security_token)) { DEBUG(6, ("Granting FSRVP op, administrators group member\n")); return true; } if (nt_token_check_sid(&global_sid_Builtin_Backup_Operators, - p->session_info->security_token)) { + session_info->security_token)) { DEBUG(6, ("Granting FSRVP op, backup operators group member\n")); return true; } - if (security_token_has_privilege(p->session_info->security_token, + if (security_token_has_privilege(session_info->security_token, SEC_PRIV_BACKUP)) { DEBUG(6, ("Granting FSRVP op, backup privilege present\n")); return true; @@ -728,6 +732,9 @@ static uint32_t map_share_comment(struct fss_sc_smap *sc_smap, uint32_t _fss_AddToShadowCopySet(struct pipes_struct *p, struct fss_AddToShadowCopySet *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); uint32_t ret; struct fss_sc_set *sc_set; struct fss_sc *sc; @@ -773,12 +780,12 @@ uint32_t _fss_AddToShadowCopySet(struct pipes_struct *p, goto err_tmp_free; } - status = fss_conn_create_tos(p->msg_ctx, p->session_info, snum, &conn); + status = fss_conn_create_tos(p->msg_ctx, session_info, snum, &conn); if (!NT_STATUS_IS_OK(status)) { ret = HRES_ERROR_V(HRES_E_ACCESSDENIED); goto err_tmp_free; } - if (!become_user_without_service_by_session(conn, p->session_info)) { + if (!become_user_without_service_by_session(conn, session_info)) { DEBUG(0, ("failed to become user\n")); ret = HRES_ERROR_V(HRES_E_ACCESSDENIED); goto err_tmp_free; @@ -929,6 +936,9 @@ static NTSTATUS commit_sc_with_conn(TALLOC_CTX *mem_ctx, uint32_t _fss_CommitShadowCopySet(struct pipes_struct *p, struct fss_CommitShadowCopySet *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); struct fss_sc_set *sc_set; struct fss_sc *sc; uint32_t commit_count; @@ -961,7 +971,7 @@ uint32_t _fss_CommitShadowCopySet(struct pipes_struct *p, char *base_path; char *snap_path; status = commit_sc_with_conn(frame, global_event_context(), - p->msg_ctx, p->session_info, sc, + p->msg_ctx, session_info, sc, &base_path, &snap_path); if (!NT_STATUS_IS_OK(status)) { DEBUG(0, ("snap create failed for shadow copy of " @@ -1330,6 +1340,9 @@ uint32_t _fss_AbortShadowCopySet(struct pipes_struct *p, uint32_t _fss_IsPathSupported(struct pipes_struct *p, struct fss_IsPathSupported *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); int snum; char *service; char *base_vol; @@ -1358,12 +1371,12 @@ uint32_t _fss_IsPathSupported(struct pipes_struct *p, return HRES_ERROR_V(HRES_E_INVALIDARG); } - status = fss_conn_create_tos(p->msg_ctx, p->session_info, snum, &conn); + status = fss_conn_create_tos(p->msg_ctx, session_info, snum, &conn); if (!NT_STATUS_IS_OK(status)) { TALLOC_FREE(frame); return HRES_ERROR_V(HRES_E_ACCESSDENIED); } - if (!become_user_without_service_by_session(conn, p->session_info)) { + if (!become_user_without_service_by_session(conn, session_info)) { DEBUG(0, ("failed to become user\n")); TALLOC_FREE(frame); return HRES_ERROR_V(HRES_E_ACCESSDENIED); @@ -1569,6 +1582,9 @@ err_cancel: uint32_t _fss_DeleteShareMapping(struct pipes_struct *p, struct fss_DeleteShareMapping *r) { + struct dcesrv_call_state *dce_call = p->dce_call; + struct auth_session_info *session_info = + dcesrv_call_session_info(dce_call); struct fss_sc_set *sc_set; struct fss_sc *sc; struct fss_sc_smap *sc_smap; @@ -1638,11 +1654,11 @@ uint32_t _fss_DeleteShareMapping(struct pipes_struct *p, -- Samba Shared Repository