From 7f66ebde2e2975b079f6c135b131d064dab38624 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 29 Apr 2011 11:36:14 +1000 Subject: s3-smb Use FILE_ATTRIBUTE_READONLY intead of aRONLY This means we use just one constant for this file attribute. Andrew Bartlett --- source3/locking/locking.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index f5892ddf0d..232a8c3702 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -1424,7 +1424,7 @@ NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32 dosmode) * Only allow delete on close for writable files. */ - if ((dosmode & aRONLY) && + if ((dosmode & FILE_ATTRIBUTE_READONLY) && !lp_delete_readonly(SNUM(fsp->conn))) { DEBUG(10,("can_set_delete_on_close: file %s delete on close " "flag set but file attribute is readonly.\n", -- cgit From e4667926ce752775e9ba1108c4cb41d6f97a04fa Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 3 May 2011 14:01:20 -0700 Subject: Fix the only place we reply on the NULL handling for the source in safe_strcpy. --- source3/locking/locking.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 232a8c3702..1f63bdd4c4 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -838,14 +838,17 @@ static TDB_DATA unparse_share_modes(const struct share_mode_lock *lck) offset += token_size; } - safe_strcpy((char *)result.dptr + offset, lck->servicepath, - result.dsize - offset - 1); + strlcpy((char *)result.dptr + offset, + lck->servicepath ? lck->servicepath : "", + result.dsize - offset); offset += sp_len + 1; - safe_strcpy((char *)result.dptr + offset, lck->base_name, - result.dsize - offset - 1); + strlcpy((char *)result.dptr + offset, + lck->base_name ? lck->base_name : "", + result.dsize - offset); offset += bn_len + 1; - safe_strcpy((char *)result.dptr + offset, lck->stream_name, - result.dsize - offset - 1); + strlcpy((char *)result.dptr + offset, + lck->stream_name ? lck->stream_name : "", + result.dsize - offset); if (DEBUGLEVEL >= 10) { print_share_mode_table(data); @@ -1087,10 +1090,15 @@ bool rename_share_filename(struct messaging_context *msg_ctx, DEBUG(10,("rename_share_filename: msg_len = %u\n", (unsigned int)msg_len )); - safe_strcpy(&frm[24], lck->servicepath, sp_len); - safe_strcpy(&frm[24 + sp_len + 1], lck->base_name, bn_len); - safe_strcpy(&frm[24 + sp_len + 1 + bn_len + 1], lck->stream_name, - sn_len); + strlcpy(&frm[24], + lck->servicepath ? lck->servicepath : "", + sp_len+1); + strlcpy(&frm[24 + sp_len + 1], + lck->base_name ? lck->base_name : "", + bn_len+1); + strlcpy(&frm[24 + sp_len + 1 + bn_len + 1], + lck->stream_name ? lck->stream_name : "", + sn_len+1); /* Send the messages. */ for (i=0; inum_share_modes; i++) { -- cgit From d8cfca3a9bd2b6b6c562fd202377d95a98eb5472 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 5 May 2011 11:25:29 +0200 Subject: s3: only include tdb headers where needed. Guenther --- source3/locking/locking.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 1f63bdd4c4..9bb3b9cf2e 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -43,6 +43,7 @@ #include "../libcli/security/security.h" #include "serverid.h" #include "messages.h" +#include "util_tdb.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_LOCKING -- cgit From 4586f5176bab04f7e003a3e93e4d62a512e8c047 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 28 May 2011 10:24:20 +0200 Subject: s3: Fix some nonempty blank lines --- source3/locking/locking.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 9bb3b9cf2e..f3a8d8c3f5 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -4,17 +4,17 @@ Copyright (C) Andrew Tridgell 1992-2000 Copyright (C) Jeremy Allison 1992-2006 Copyright (C) Volker Lendecke 2005 - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . @@ -310,15 +310,15 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx, { bool ok = False; struct byte_range_lock *br_lck = NULL; - + if (!fsp->can_lock) { return fsp->is_directory ? NT_STATUS_INVALID_DEVICE_REQUEST : NT_STATUS_INVALID_HANDLE; } - + if (!lp_locking(fsp->conn->params)) { return NT_STATUS_OK; } - + DEBUG(10,("do_unlock: unlock start=%.0f len=%.0f requested for fnum %d file %s\n", (double)offset, (double)count, fsp->fnum, fsp_str_dbg(fsp))); @@ -335,7 +335,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx, offset, count, lock_flav); - + TALLOC_FREE(br_lck); if (!ok) { @@ -365,7 +365,7 @@ NTSTATUS do_lock_cancel(files_struct *fsp, return fsp->is_directory ? NT_STATUS_INVALID_DEVICE_REQUEST : NT_STATUS_INVALID_HANDLE; } - + if (!lp_locking(fsp->conn->params)) { return NT_STATUS_DOS(ERRDOS, ERRcancelviolation); } @@ -672,7 +672,7 @@ static bool parse_share_modes(const TDB_DATA dbuf, struct share_mode_lock *lck) } lck->share_modes = NULL; - + if (lck->num_share_modes != 0) { if (dbuf.dsize < (sizeof(struct locking_data) + @@ -680,7 +680,7 @@ static bool parse_share_modes(const TDB_DATA dbuf, struct share_mode_lock *lck) sizeof(struct share_mode_entry)))) { smb_panic("parse_share_modes: buffer too short"); } - + lck->share_modes = (struct share_mode_entry *) TALLOC_MEMDUP(lck, dbuf.dptr+sizeof(struct locking_data), @@ -1582,7 +1582,7 @@ void set_delete_on_close_lck(files_struct *fsp, bool set_delete_on_close(files_struct *fsp, bool delete_on_close, const struct security_unix_token *tok) { struct share_mode_lock *lck; - + DEBUG(10,("set_delete_on_close: %s delete on close flag for " "fnum = %d, file %s\n", delete_on_close ? "Adding" : "Removing", fsp->fnum, -- cgit From 77ce431fdbd9f85f44c9bd8812e275a0b0e73f5d Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 28 May 2011 10:38:52 +0200 Subject: s3: Use talloc_memdup in copy_unix_token --- source3/locking/locking.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index f3a8d8c3f5..3e511c487d 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -1493,11 +1493,11 @@ static struct security_unix_token *copy_unix_token(TALLOC_CTX *ctx, const struct cpy->ngroups = tok->ngroups; if (tok->ngroups) { /* Make this a talloc child of cpy. */ - cpy->groups = TALLOC_ARRAY(cpy, gid_t, tok->ngroups); + cpy->groups = (gid_t *)talloc_memdup( + cpy, tok->groups, tok->ngroups * sizeof(gid_t)); if (!cpy->groups) { return NULL; } - memcpy(cpy->groups, tok->groups, tok->ngroups * sizeof(gid_t)); } return cpy; } -- cgit From 9e05d3430fedde70fcb1f6a1121c2cb67e4ce0f0 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 28 May 2011 10:39:25 +0200 Subject: s3: Fix a tiny memleak in copy_unix_token Autobuild-User: Volker Lendecke Autobuild-Date: Sat May 28 11:47:11 CEST 2011 on sn-devel-104 --- source3/locking/locking.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 3e511c487d..a4561f50d8 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -1496,6 +1496,7 @@ static struct security_unix_token *copy_unix_token(TALLOC_CTX *ctx, const struct cpy->groups = (gid_t *)talloc_memdup( cpy, tok->groups, tok->ngroups * sizeof(gid_t)); if (!cpy->groups) { + TALLOC_FREE(cpy); return NULL; } } -- cgit From 3d15137653a7d1b593a9af2eef12f6e5b9a04c4f Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 7 Jun 2011 11:30:12 +1000 Subject: s3-talloc Change TALLOC_ARRAY() to talloc_array() Using the standard macro makes it easier to move code into common, as TALLOC_ARRAY isn't standard talloc. --- source3/locking/locking.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index a4561f50d8..55412ec8b2 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -616,7 +616,7 @@ static int parse_delete_tokens_list(struct share_mode_lock *lck, } pdtl->delete_token->ngroups = token_len / sizeof(gid_t); - pdtl->delete_token->groups = TALLOC_ARRAY(pdtl->delete_token, gid_t, + pdtl->delete_token->groups = talloc_array(pdtl->delete_token, gid_t, pdtl->delete_token->ngroups); if (pdtl->delete_token->groups == NULL) { DEBUG(0,("parse_delete_tokens_list: talloc failed")); @@ -782,7 +782,7 @@ static TDB_DATA unparse_share_modes(const struct share_mode_lock *lck) sp_len + 1 + bn_len + 1 + sn_len + 1; - result.dptr = TALLOC_ARRAY(lck, uint8, result.dsize); + result.dptr = talloc_array(lck, uint8, result.dsize); if (result.dptr == NULL) { smb_panic("talloc failed"); @@ -1082,7 +1082,7 @@ bool rename_share_filename(struct messaging_context *msg_ctx, sn_len + 1; /* Set up the name changed message. */ - frm = TALLOC_ARRAY(lck, char, msg_len); + frm = talloc_array(lck, char, msg_len); if (!frm) { return False; } -- cgit From d5e6a47f064a3923b1e257ab84fa7ccd7c4f89f4 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 7 Jun 2011 11:38:41 +1000 Subject: s3-talloc Change TALLOC_P() to talloc() Using the standard macro makes it easier to move code into common, as TALLOC_P isn't standard talloc. --- source3/locking/locking.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 55412ec8b2..153f3da585 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -973,7 +973,7 @@ struct share_mode_lock *get_share_mode_lock(TALLOC_CTX *mem_ctx, struct file_id tmp; TDB_DATA key = locking_key(&id, &tmp); - if (!(lck = TALLOC_P(mem_ctx, struct share_mode_lock))) { + if (!(lck = talloc(mem_ctx, struct share_mode_lock))) { DEBUG(0, ("talloc failed\n")); return NULL; } @@ -1004,7 +1004,7 @@ struct share_mode_lock *fetch_share_mode_unlocked(TALLOC_CTX *mem_ctx, TDB_DATA key = locking_key(&id, &tmp); TDB_DATA data; - if (!(lck = TALLOC_P(mem_ctx, struct share_mode_lock))) { + if (!(lck = talloc(mem_ctx, struct share_mode_lock))) { DEBUG(0, ("talloc failed\n")); return NULL; } @@ -1483,7 +1483,7 @@ static struct security_unix_token *copy_unix_token(TALLOC_CTX *ctx, const struct { struct security_unix_token *cpy; - cpy = TALLOC_P(ctx, struct security_unix_token); + cpy = talloc(ctx, struct security_unix_token); if (!cpy) { return NULL; } -- cgit From ad0a07c531fadd1639c5298951cfaf5cfe0cb10e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 7 Jun 2011 11:44:43 +1000 Subject: s3-talloc Change TALLOC_ZERO_P() to talloc_zero() Using the standard macro makes it easier to move code into common, as TALLOC_ZERO_P isn't standard talloc. --- source3/locking/locking.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 153f3da585..91dff565d3 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -579,7 +579,7 @@ static int parse_delete_tokens_list(struct share_mode_lock *lck, p += sizeof(token_len); - pdtl = TALLOC_ZERO_P(lck, struct delete_token_list); + pdtl = talloc_zero(lck, struct delete_token_list); if (pdtl == NULL) { DEBUG(0,("parse_delete_tokens_list: talloc failed")); return -1; @@ -588,7 +588,7 @@ static int parse_delete_tokens_list(struct share_mode_lock *lck, memcpy(&pdtl->name_hash, p, sizeof(pdtl->name_hash)); p += sizeof(pdtl->name_hash); - pdtl->delete_token = TALLOC_ZERO_P(pdtl, struct security_unix_token); + pdtl->delete_token = talloc_zero(pdtl, struct security_unix_token); if (pdtl->delete_token == NULL) { DEBUG(0,("parse_delete_tokens_list: talloc failed")); return -1; @@ -1513,7 +1513,7 @@ static bool add_delete_on_close_token(struct share_mode_lock *lck, { struct delete_token_list *dtl; - dtl = TALLOC_ZERO_P(lck, struct delete_token_list); + dtl = talloc_zero(lck, struct delete_token_list); if (dtl == NULL) { return false; } -- cgit From 8d4a8389bb2df77ff8923dda8368aa2915652c1a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 7 Jun 2011 12:13:26 +1000 Subject: s3-talloc Change TALLOC_MEMDUP() to talloc_memdup() Using the standard macro makes it easier to move code into common, as TALLOC_MEMDUP isn't standard talloc. --- source3/locking/locking.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 91dff565d3..e0a3b93ce7 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -682,7 +682,7 @@ static bool parse_share_modes(const TDB_DATA dbuf, struct share_mode_lock *lck) } lck->share_modes = (struct share_mode_entry *) - TALLOC_MEMDUP(lck, + talloc_memdup(lck, dbuf.dptr+sizeof(struct locking_data), lck->num_share_modes * sizeof(struct share_mode_entry)); -- cgit From d925b327f4703cc141c0a7f3eec912dba8440880 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 20 Jun 2011 18:40:33 +0930 Subject: tdb_compat: Higher level API fixes. My previous patches fixed up all direct TDB callers, but there are a few utility functions and the db_context functions which are still using the old -1 / 0 return codes. It's clearer to fix up all the callers of these too, so everywhere is consistent: non-zero means an error. Signed-off-by: Rusty Russell --- source3/locking/locking.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index e0a3b93ce7..81e93a555a 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -1009,7 +1009,7 @@ struct share_mode_lock *fetch_share_mode_unlocked(TALLOC_CTX *mem_ctx, return NULL; } - if (lock_db->fetch(lock_db, lck, key, &data) == -1) { + if (lock_db->fetch(lock_db, lck, key, &data) != 0) { DEBUG(3, ("Could not fetch share entry\n")); TALLOC_FREE(lck); return NULL; -- cgit