[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-1250-gac2bb83

Volker Lendecke vl at samba.org
Thu Jan 10 12:20:30 GMT 2008


The branch, v3-2-test has been updated
       via  ac2bb838d537ca563ad2fe770b3e1c2fe8b1d9e7 (commit)
       via  444e35e7df1f13fc285183da8fb41b30ad99a3fa (commit)
       via  65dd869bea351010c67f02046ae4134bdada1a4c (commit)
      from  88d6683872f4bb9c3074280f385f73c7af9de784 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit ac2bb838d537ca563ad2fe770b3e1c2fe8b1d9e7
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 6 14:17:15 2008 +0100

    use talloc_tos() in share_access_check()

commit 444e35e7df1f13fc285183da8fb41b30ad99a3fa
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 6 16:15:45 2008 +0100

    Some more talloc_tos()

commit 65dd869bea351010c67f02046ae4134bdada1a4c
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Jan 6 14:21:25 2008 +0100

    use talloc_tos in a few more places

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

Summary of changes:
 source/lib/sharesec.c             |   11 +++--------
 source/locking/locking.c          |   18 +++++++++---------
 source/rpc_server/srv_srvsvc_nt.c |    2 +-
 source/smbd/blocking.c            |   10 +++++-----
 source/smbd/close.c               |    4 ++--
 source/smbd/connection.c          |    2 +-
 source/smbd/open.c                |    8 ++++----
 source/smbd/oplock.c              |    6 +++---
 source/smbd/reply.c               |    8 +++++---
 source/smbd/trans2.c              |    2 +-
 10 files changed, 34 insertions(+), 37 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/sharesec.c b/source/lib/sharesec.c
index ba025da..f6ff701 100644
--- a/source/lib/sharesec.c
+++ b/source/lib/sharesec.c
@@ -228,25 +228,20 @@ bool share_access_check(const NT_USER_TOKEN *token, const char *sharename,
 {
 	uint32 granted;
 	NTSTATUS status;
-	TALLOC_CTX *mem_ctx = NULL;
 	SEC_DESC *psd = NULL;
 	size_t sd_size;
 	bool ret = True;
 
-	if (!(mem_ctx = talloc_init("share_access_check"))) {
-		return False;
-	}
-
-	psd = get_share_security(mem_ctx, sharename, &sd_size);
+	psd = get_share_security(talloc_tos(), sharename, &sd_size);
 
 	if (!psd) {
-		TALLOC_FREE(mem_ctx);
 		return True;
 	}
 
 	ret = se_access_check(psd, token, desired_access, &granted, &status);
 
-	talloc_destroy(mem_ctx);
+	TALLOC_FREE(psd);
+
 	return ret;
 }
 
diff --git a/source/locking/locking.c b/source/locking/locking.c
index 2ec8cd2..113b994 100644
--- a/source/locking/locking.c
+++ b/source/locking/locking.c
@@ -102,7 +102,7 @@ bool is_locked(files_struct *fsp,
 			DEBUG(10,("is_locked: optimisation - level II oplock on file %s\n", fsp->fsp_name ));
 			ret = False;
 		} else {
-			struct byte_range_lock *br_lck = brl_get_locks_readonly(NULL, fsp);
+			struct byte_range_lock *br_lck = brl_get_locks_readonly(talloc_tos(), fsp);
 			if (!br_lck) {
 				return False;
 			}
@@ -116,7 +116,7 @@ bool is_locked(files_struct *fsp,
 			TALLOC_FREE(br_lck);
 		}
 	} else {
-		struct byte_range_lock *br_lck = brl_get_locks_readonly(NULL, fsp);
+		struct byte_range_lock *br_lck = brl_get_locks_readonly(talloc_tos(), fsp);
 		if (!br_lck) {
 			return False;
 		}
@@ -160,7 +160,7 @@ NTSTATUS query_lock(files_struct *fsp,
 		return NT_STATUS_OK;
 	}
 
-	br_lck = brl_get_locks_readonly(NULL, fsp);
+	br_lck = brl_get_locks_readonly(talloc_tos(), fsp);
 	if (!br_lck) {
 		return NT_STATUS_NO_MEMORY;
 	}
@@ -210,7 +210,7 @@ struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
 		lock_flav_name(lock_flav), lock_type_name(lock_type),
 		(double)offset, (double)count, fsp->fnum, fsp->fsp_name ));
 
-	br_lck = brl_get_locks(NULL, fsp);
+	br_lck = brl_get_locks(talloc_tos(), fsp);
 	if (!br_lck) {
 		*perr = NT_STATUS_NO_MEMORY;
 		return NULL;
@@ -269,7 +269,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx,
 	DEBUG(10,("do_unlock: unlock start=%.0f len=%.0f requested for fnum %d file %s\n",
 		  (double)offset, (double)count, fsp->fnum, fsp->fsp_name ));
 
-	br_lck = brl_get_locks(NULL, fsp);
+	br_lck = brl_get_locks(talloc_tos(), fsp);
 	if (!br_lck) {
 		return NT_STATUS_NO_MEMORY;
 	}
@@ -323,7 +323,7 @@ NTSTATUS do_lock_cancel(files_struct *fsp,
 	DEBUG(10,("do_lock_cancel: cancel start=%.0f len=%.0f requested for fnum %d file %s\n",
 		  (double)offset, (double)count, fsp->fnum, fsp->fsp_name ));
 
-	br_lck = brl_get_locks(NULL, fsp);
+	br_lck = brl_get_locks(talloc_tos(), fsp);
 	if (!br_lck) {
 		return NT_STATUS_NO_MEMORY;
 	}
@@ -372,7 +372,7 @@ void locking_close_file(struct messaging_context *msg_ctx,
 		return;
 	}
 
-	br_lck = brl_get_locks(NULL,fsp);
+	br_lck = brl_get_locks(talloc_tos(),fsp);
 
 	if (br_lck) {
 		cancel_pending_lock_requests_by_fid(fsp, br_lck);
@@ -925,7 +925,7 @@ bool get_delete_on_close_flag(struct file_id id)
 	bool result;
 	struct share_mode_lock *lck;
   
-	if (!(lck = fetch_share_mode_unlocked(NULL, id, NULL, NULL))) {
+	if (!(lck = fetch_share_mode_unlocked(talloc_tos(), id, NULL, NULL))) {
 		return False;
 	}
 	result = lck->delete_on_close;
@@ -1328,7 +1328,7 @@ bool set_delete_on_close(files_struct *fsp, bool delete_on_close, UNIX_USER_TOKE
 		return True;
 	}
 
-	lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
 	if (lck == NULL) {
 		return False;
 	}
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index 01e5cf2..1b877ee 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -167,7 +167,7 @@ static void enum_file_fn( const struct share_mode_entry *e,
 	ZERO_STRUCT( fsp );
 	fsp.file_id = e->id;
 
-	if ( (brl = brl_get_locks(NULL,&fsp)) != NULL ) {
+	if ( (brl = brl_get_locks(talloc_tos(), &fsp)) != NULL ) {
 		num_locks = brl->num_locks;
 		TALLOC_FREE(brl);
 	}
diff --git a/source/smbd/blocking.c b/source/smbd/blocking.c
index 4e0d528..479361a 100644
--- a/source/smbd/blocking.c
+++ b/source/smbd/blocking.c
@@ -625,7 +625,7 @@ void remove_pending_lock_requests_by_mid(int mid)
 		next = blr->next;
 		if(SVAL(blr->inbuf,smb_mid) == mid) {
 			files_struct *fsp = blr->fsp;
-			struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
+			struct byte_range_lock *br_lck = brl_get_locks(talloc_tos(), fsp);
 
 			if (br_lck) {
 				DEBUG(10,("remove_pending_lock_requests_by_mid - removing request type %d for \
@@ -715,7 +715,7 @@ static void process_blocking_lock_queue(void)
 			fsp->fnum, fsp->fsp_name ));
 
 		if(!change_to_user(conn,vuid)) {
-			struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
+			struct byte_range_lock *br_lck = brl_get_locks(talloc_tos(), fsp);
 
 			/*
 			 * Remove the entry and return an error to the client.
@@ -741,7 +741,7 @@ static void process_blocking_lock_queue(void)
 		}
 
 		if(!set_current_service(conn,SVAL(blr->inbuf,smb_flg),True)) {
-			struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
+			struct byte_range_lock *br_lck = brl_get_locks(talloc_tos(), fsp);
 
 			/*
 			 * Remove the entry and return an error to the client.
@@ -773,7 +773,7 @@ static void process_blocking_lock_queue(void)
 		 */
 
 		if(blocking_lock_record_process(blr)) {
-			struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
+			struct byte_range_lock *br_lck = brl_get_locks(talloc_tos(), fsp);
 
 			if (br_lck) {
 				brl_lock_cancel(br_lck,
@@ -800,7 +800,7 @@ static void process_blocking_lock_queue(void)
 		 */
 
 		if (!timeval_is_zero(&blr->expire_time) && timeval_compare(&blr->expire_time, &tv_curr) <= 0) {
-			struct byte_range_lock *br_lck = brl_get_locks(NULL, fsp);
+			struct byte_range_lock *br_lck = brl_get_locks(talloc_tos(), fsp);
 
 			/*
 			 * Lock expired - throw away all previously
diff --git a/source/smbd/close.c b/source/smbd/close.c
index 5d30e46..c74e133 100644
--- a/source/smbd/close.c
+++ b/source/smbd/close.c
@@ -176,7 +176,7 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
 	 * This prevents race conditions with the file being created. JRA.
 	 */
 
-	lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
 
 	if (lck == NULL) {
 		DEBUG(0, ("close_remove_share_mode: Could not get share mode "
@@ -441,7 +441,7 @@ static NTSTATUS close_directory(files_struct *fsp, enum file_close_type close_ty
 	 * reference to a directory also.
 	 */
 
-	lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
 
 	if (lck == NULL) {
 		DEBUG(0, ("close_directory: Could not get share mode lock for %s\n", fsp->fsp_name));
diff --git a/source/smbd/connection.c b/source/smbd/connection.c
index 95e45a6..016c8ad 100644
--- a/source/smbd/connection.c
+++ b/source/smbd/connection.c
@@ -132,7 +132,7 @@ bool claim_connection(connection_struct *conn, const char *name,
 
 	DEBUG(5,("claiming [%s]\n", name));
 
-	if (!(rec = connections_fetch_entry(NULL, conn, name))) {
+	if (!(rec = connections_fetch_entry(talloc_tos(), conn, name))) {
 		DEBUG(0, ("connections_fetch_entry failed\n"));
 		return False;
 	}
diff --git a/source/smbd/open.c b/source/smbd/open.c
index 037ab63..59699df 100644
--- a/source/smbd/open.c
+++ b/source/smbd/open.c
@@ -1221,7 +1221,7 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
 		request_time = pml->request_time;
 
 		/* Remove the deferred open entry under lock. */
-		lck = get_share_mode_lock(NULL, state->id, NULL, NULL);
+		lck = get_share_mode_lock(talloc_tos(), state->id, NULL, NULL);
 		if (lck == NULL) {
 			DEBUG(0, ("could not get share mode lock\n"));
 		} else {
@@ -1451,7 +1451,7 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
 	if (file_existed) {
 		id = vfs_file_id_from_sbuf(conn, psbuf);
 
-		lck = get_share_mode_lock(NULL, id,
+		lck = get_share_mode_lock(talloc_tos(), id,
 					  conn->connectpath,
 					  fname);
 
@@ -1678,7 +1678,7 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
 
 		id = fsp->file_id;
 
-		lck = get_share_mode_lock(NULL, id,
+		lck = get_share_mode_lock(talloc_tos(), id,
 					  conn->connectpath,
 					  fname);
 
@@ -2212,7 +2212,7 @@ NTSTATUS open_directory(connection_struct *conn,
 
 	string_set(&fsp->fsp_name,fname);
 
-	lck = get_share_mode_lock(NULL, fsp->file_id,
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id,
 				  conn->connectpath,
 				  fname);
 
diff --git a/source/smbd/oplock.c b/source/smbd/oplock.c
index 277e07c..420aa94 100644
--- a/source/smbd/oplock.c
+++ b/source/smbd/oplock.c
@@ -181,7 +181,7 @@ bool remove_oplock(files_struct *fsp)
 	struct share_mode_lock *lck;
 
 	/* Remove the oplock flag from the sharemode. */
-	lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
 	if (lck == NULL) {
 		DEBUG(0,("remove_oplock: failed to lock share entry for "
 			 "file %s\n", fsp->fsp_name ));
@@ -206,7 +206,7 @@ bool downgrade_oplock(files_struct *fsp)
 	bool ret;
 	struct share_mode_lock *lck;
 
-	lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
 	if (lck == NULL) {
 		DEBUG(0,("downgrade_oplock: failed to lock share entry for "
 			 "file %s\n", fsp->fsp_name ));
@@ -757,7 +757,7 @@ void release_level_2_oplocks_on_change(files_struct *fsp)
 	if (!LEVEL_II_OPLOCK_TYPE(fsp->oplock_type))
 		return;
 
-	lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
 	if (lck == NULL) {
 		DEBUG(0,("release_level_2_oplocks_on_change: failed to lock "
 			 "share mode entry for file %s.\n", fsp->fsp_name ));
diff --git a/source/smbd/reply.c b/source/smbd/reply.c
index a796a31..79c0176 100644
--- a/source/smbd/reply.c
+++ b/source/smbd/reply.c
@@ -592,7 +592,8 @@ void reply_tcon_and_X(struct smb_request *req)
 	}
 
 	if (global_encrypted_passwords_negotiated) {
-		password = data_blob(smb_buf(req->inbuf),passlen);
+		password = data_blob_talloc(talloc_tos(), smb_buf(req->inbuf),
+					    passlen);
 		if (lp_security() == SEC_SHARE) {
 			/*
 			 * Security = share always has a pad byte
@@ -603,7 +604,8 @@ void reply_tcon_and_X(struct smb_request *req)
 			p = smb_buf(req->inbuf) + passlen;
 		}
 	} else {
-		password = data_blob(smb_buf(req->inbuf),passlen+1);
+		password = data_blob_talloc(talloc_tos(), smb_buf(req->inbuf),
+					    passlen+1);
 		/* Ensure correct termination */
 		password.data[passlen]=0;
 		p = smb_buf(req->inbuf) + passlen + 1;
@@ -5508,7 +5510,7 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
-	lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
 
 	/*
 	 * We have the file open ourselves, so not being able to get the
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index ce0b239..bf6802f 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -6193,7 +6193,7 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
 	 * non-POSIX opens return SHARING_VIOLATION.
 	 */
 
-	lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
 	if (lck == NULL) {
 		DEBUG(0, ("smb_posix_unlink: Could not get share mode "
 			"lock for file %s\n", fsp->fsp_name));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list