[SCM] Samba Shared Repository - branch v3-3-test updated -
release-3-2-0pre2-4382-g37233a3
Jeremy Allison
jra at samba.org
Mon Nov 17 22:14:17 GMT 2008
The branch, v3-3-test has been updated
via 37233a3f62f4b0e5d4fc3376687f445656bded41 (commit)
from 38f37ebb2478e62007e1eeb38054ad4f6949824a (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test
- Log -----------------------------------------------------------------
commit 37233a3f62f4b0e5d4fc3376687f445656bded41
Author: Jeremy Allison <jra at samba.org>
Date: Mon Nov 17 14:13:28 2008 -0800
Fix bug #5900 reported by monyo at samba.gr.jp - vfs_readonly.so does not work.
Jeremy.
-----------------------------------------------------------------------
Summary of changes:
source/include/proto.h | 3 ++-
source/modules/vfs_readonly.c | 13 +++++++++++++
source/smbd/share_access.c | 6 ++++--
source/smbd/uid.c | 3 ++-
4 files changed, 21 insertions(+), 4 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/include/proto.h b/source/include/proto.h
index b432e6b..3e3ddd4 100644
--- a/source/include/proto.h
+++ b/source/include/proto.h
@@ -10306,7 +10306,8 @@ bool user_ok_token(const char *username, const char *domain,
struct nt_user_token *token, int snum);
bool is_share_read_only_for_token(const char *username,
const char *domain,
- struct nt_user_token *token, int snum);
+ struct nt_user_token *token,
+ connection_struct *conn);
/* The following definitions come from smbd/srvstr.c */
diff --git a/source/modules/vfs_readonly.c b/source/modules/vfs_readonly.c
index d4ddf32..58c83e5 100644
--- a/source/modules/vfs_readonly.c
+++ b/source/modules/vfs_readonly.c
@@ -64,12 +64,25 @@ static int readonly_connect(vfs_handle_struct *handle,
"period", period_def);
if (period && period[0] && period[1]) {
+ int i;
time_t current_time = time(NULL);
time_t begin_period = get_date(period[0], ¤t_time);
time_t end_period = get_date(period[1], ¤t_time);
if ((current_time >= begin_period) && (current_time <= end_period)) {
+ connection_struct *conn = handle->conn;
+
handle->conn->read_only = True;
+
+ /* Wipe out the VUID cache. */
+ for (i=0; i< VUID_CACHE_SIZE; i++) {
+ struct vuid_cache_entry *ent = ent = &conn->vuid_cache.array[i];
+ ent->vuid = UID_FIELD_INVALID;
+ TALLOC_FREE(ent->server_info);
+ ent->read_only = false;
+ ent->admin_user = false;
+ }
+ conn->vuid_cache.next_entry = 0;
}
return SMB_VFS_NEXT_CONNECT(handle, service, user);
diff --git a/source/smbd/share_access.c b/source/smbd/share_access.c
index f5f79c8..9dbacc2 100644
--- a/source/smbd/share_access.c
+++ b/source/smbd/share_access.c
@@ -252,9 +252,11 @@ bool user_ok_token(const char *username, const char *domain,
bool is_share_read_only_for_token(const char *username,
const char *domain,
- struct nt_user_token *token, int snum)
+ struct nt_user_token *token,
+ connection_struct *conn)
{
- bool result = lp_readonly(snum);
+ int snum = SNUM(conn);
+ bool result = conn->read_only;
if (lp_readlist(snum) != NULL) {
if (token_contains_name_in_list(username, domain,
diff --git a/source/smbd/uid.c b/source/smbd/uid.c
index 045de6f..c238f40 100644
--- a/source/smbd/uid.c
+++ b/source/smbd/uid.c
@@ -88,7 +88,8 @@ static bool check_user_ok(connection_struct *conn, uint16_t vuid,
readonly_share = is_share_read_only_for_token(
server_info->unix_name,
pdb_get_domain(server_info->sam_account),
- server_info->ptok, snum);
+ server_info->ptok,
+ conn);
if (!readonly_share &&
!share_access_check(server_info->ptok, lp_servicename(snum),
--
Samba Shared Repository
More information about the samba-cvs
mailing list