The branch, master has been updated via abda9d3 s3: Fix Coverity ID 709217 Dereference after null check via 6710e4e s3: Fix Coverity ID 709218 Uninitialized pointer read via 3e6d8ac s3:vfs: use smbXsrv_open instead of smbXsrv_open0 in files_struct via f2e8409 s3:vfs: use smbXsrv_tcon instead of smbXsrv_tcon0 in connection_struct. via db0c233 s3:smb: include "smbXsrv.h" before "vfs.h" via e332bfa s3:smbd: Include smbXsrv.h before vfs.h (in smbd.h) so that the smbXsrv structures are available via 8a32d62 s3:smbd:smb2: fix prototype of make_connection_smb2() to use smbXsrv_tcon via 98ccca8 s3:smbd: include smbXsrv.h before smbd/proto.h to have the smbXsrv_ structs available via bfc38d7 s3:smbd:smb2: change smbXsrv_tcon0 to smbXsrv_tcon in smbd_smb2_request_check_tcon() via cca51e2 s3:smbd:smb2: change smbXsrv_session0 to smbXsrv_session in struct user_struct. from 01a425e samba-tool: gpo: Update copyright
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit abda9d334796c34afd53b15348d4ed08bdfef913 Author: Volker Lendecke <v...@samba.org> Date: Fri Jun 29 13:30:44 2012 +0200 s3: Fix Coverity ID 709217 Dereference after null check A few lines before we did check for x != NULL. I think this might fix a potential remote crash. Signed-off-by: Michael Adam <ob...@samba.org> Autobuild-User(master): Michael Adam <ob...@samba.org> Autobuild-Date(master): Tue Jul 3 15:30:17 CEST 2012 on sn-devel-104 commit 6710e4edc5d44894ba022a9f6dff4a2acaf24d07 Author: Volker Lendecke <v...@samba.org> Date: Fri Jun 29 12:37:40 2012 +0200 s3: Fix Coverity ID 709218 Uninitialized pointer read Signed-off-by: Michael Adam <ob...@samba.org> commit 3e6d8acc9b48ef4de1df08d3103313f27fa41032 Author: Michael Adam <ob...@samba.org> Date: Mon Jul 2 14:47:45 2012 +0200 s3:vfs: use smbXsrv_open instead of smbXsrv_open0 in files_struct commit f2e8409c4e60a1350ceb7615f0222789991cd1f2 Author: Michael Adam <ob...@samba.org> Date: Mon Jul 2 14:46:32 2012 +0200 s3:vfs: use smbXsrv_tcon instead of smbXsrv_tcon0 in connection_struct. commit db0c233624e633b3cc1a6e0e44dccc09aaa121f2 Author: Michael Adam <ob...@samba.org> Date: Mon Jul 2 16:10:26 2012 +0200 s3:smb: include "smbXsrv.h" before "vfs.h" This is still needed as long as smbXsrv_open/_tcon are referenced in files_struct and connection_struct respectively. Eventually, these structures should not have a backlink to the smb world any more. commit e332bfaff51e54638bd37cd1fe08e57608e16e86 Author: Michael Adam <ob...@samba.org> Date: Mon Jul 2 14:46:00 2012 +0200 s3:smbd: Include smbXsrv.h before vfs.h (in smbd.h) so that the smbXsrv structures are available This is currently needed for files_struct and connection_struct that contain backlinks to smbXsrv_open and smbXsrv_tcon, respectively. Finally, these backlinks to the smb level structures should be removed. commit 8a32d62abc7c9f514fa3de2c87202ef7b68bd2b5 Author: Michael Adam <ob...@samba.org> Date: Mon Jul 2 13:37:07 2012 +0200 s3:smbd:smb2: fix prototype of make_connection_smb2() to use smbXsrv_tcon instead of internal smbXsrv_tcon0. commit 98ccca8dca70b87d04a93c8ef5232a071ab7c2af Author: Michael Adam <ob...@samba.org> Date: Mon Jul 2 14:27:06 2012 +0200 s3:smbd: include smbXsrv.h before smbd/proto.h to have the smbXsrv_ structs available commit bfc38d74ccc3a5ca378ef718ae19dfc1a1d05d7e Author: Michael Adam <ob...@samba.org> Date: Mon Jul 2 13:31:12 2012 +0200 s3:smbd:smb2: change smbXsrv_tcon0 to smbXsrv_tcon in smbd_smb2_request_check_tcon() smbXsrv_tcon0 is the internal name for the (current) version0 of the structure. Externally, only smbXsrv_tcon should be used. commit cca51e2f55b79227e697fdc8e5b7f277d0e3e9bb Author: Michael Adam <ob...@samba.org> Date: Mon Jul 2 13:25:05 2012 +0200 s3:smbd:smb2: change smbXsrv_session0 to smbXsrv_session in struct user_struct. smbXsrv_session0 is the internal name of (current) version 0 of the structure. Externally, only smbXsrv_session should be used. ----------------------------------------------------------------------- Summary of changes: source3/include/smb.h | 6 ++++++ source3/include/vfs.h | 4 ++-- source3/smbd/conn_idle.c | 5 +++++ source3/smbd/globals.h | 2 +- source3/smbd/proto.h | 3 +-- source3/smbd/smb2_server.c | 14 +++++++++++--- source3/smbd/smbd.h | 1 + 7 files changed, 27 insertions(+), 8 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/include/smb.h b/source3/include/smb.h index f58095e..16a4e12 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -154,6 +154,12 @@ struct sys_notify_context { /* Include VFS stuff */ #include "smb_acls.h" +/* + * smbXsrv.h: currently needed for vfs.h, as long as + * the smbXsrv structures are still referenced as a + * backling from files_struct and connection_struct. + */ +#include "librpc/gen_ndr/smbXsrv.h" #include "vfs.h" struct current_user { diff --git a/source3/include/vfs.h b/source3/include/vfs.h index be4399f..6508707 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -186,7 +186,7 @@ struct fd_handle { typedef struct files_struct { struct files_struct *next, *prev; uint64_t fnum; - struct smbXsrv_open0 *op; + struct smbXsrv_open *op; struct connection_struct *conn; struct fd_handle *fh; unsigned int num_smb_operations; @@ -282,7 +282,7 @@ struct share_params { typedef struct connection_struct { struct connection_struct *next, *prev; struct smbd_server_connection *sconn; /* can be NULL */ - struct smbXsrv_tcon0 *tcon; /* can be NULL */ + struct smbXsrv_tcon *tcon; /* can be NULL */ uint32_t cnum; /* an index passed over the wire */ struct share_params *params; bool force_user; diff --git a/source3/smbd/conn_idle.c b/source3/smbd/conn_idle.c index 23dcc89..6026366 100644 --- a/source3/smbd/conn_idle.c +++ b/source3/smbd/conn_idle.c @@ -105,6 +105,11 @@ void conn_force_tdis(struct smbd_server_connection *sconn, const char *sharename next = conn->next; + if (conn->tcon == NULL) { + continue; + } + tcon = conn->tcon; + if (close_all) { do_close = true; } else if (strequal(lp_servicename(SNUM(conn)), sharename)) { diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index b07ee3a..1f2ee18 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -536,7 +536,7 @@ struct user_struct { struct auth_session_info *session_info; - struct smbXsrv_session0 *session; + struct smbXsrv_session *session; }; struct smbd_server_connection { diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index 1b28c8b..4279755 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -975,9 +975,8 @@ bool set_current_service(connection_struct *conn, uint16 flags, bool do_chdir); void load_registry_shares(void); int add_home_service(const char *service, const char *username, const char *homedir); int find_service(TALLOC_CTX *ctx, const char *service, char **p_service_out); -struct smbXsrv_tcon0; connection_struct *make_connection_smb2(struct smbd_server_connection *sconn, - struct smbXsrv_tcon0 *tcon, + struct smbXsrv_tcon *tcon, int snum, struct user_struct *vuser, const char *pdev, diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index 0abd4fc..653a038 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -1317,7 +1317,7 @@ static NTSTATUS smbd_smb2_request_check_tcon(struct smbd_smb2_request *req) int i = req->current_idx; uint32_t in_flags; uint32_t in_tid; - struct smbXsrv_tcon0 *tcon; + struct smbXsrv_tcon *tcon; NTSTATUS status; NTTIME now = timeval_to_nttime(&req->request_time); @@ -1594,8 +1594,16 @@ NTSTATUS smbd_smb2_request_dispatch(struct smbd_smb2_request *req) req->do_signing = false; if (flags & SMB2_HDR_FLAG_SIGNED) { - struct smbXsrv_connection *conn = x->connection; - DATA_BLOB signing_key = x->global->channels[0].signing_key; + struct smbXsrv_connection *conn; + DATA_BLOB signing_key; + + if (x == NULL) { + return smbd_smb2_request_error( + req, NT_STATUS_ACCESS_DENIED); + } + + conn = x->connection; + signing_key = x->global->channels[0].signing_key; if (!NT_STATUS_IS_OK(session_status)) { return smbd_smb2_request_error(req, session_status); diff --git a/source3/smbd/smbd.h b/source3/smbd/smbd.h index 39952a1..9233fd7 100644 --- a/source3/smbd/smbd.h +++ b/source3/smbd/smbd.h @@ -23,6 +23,7 @@ struct dptr_struct; struct aio_extra; #include "smb_acls.h" +#include "librpc/gen_ndr/smbXsrv.h" #include "vfs.h" #include "smbd/proto.h" #include "locking/proto.h" -- Samba Shared Repository