[SCM] Samba Shared Repository - branch master updated
Andreas Schneider
asn at samba.org
Mon May 31 10:22:04 MDT 2010
The branch, master has been updated
via 471ed70... s3:smbd map_username() doesn't need sconn anymore
via 6a25668... s3:smbd user_ok doesn't need sconn anymore
via 94bf9ce... s3:smbd user_in_list() doesn't need sconn anymore
via 7747dd8... s3:smbd user_in_network() doesn't need sconn anymore
via b32b59d... s3:smbd make yp cache local.
from 1da4153... buildtools/wafsamba: use build group 'final' for the creation of manpages
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 471ed70c497f4eeaca27594d609f41f2b2c689cd
Author: Simo Sorce <ssorce at redhat.com>
Date: Mon May 31 10:52:06 2010 -0400
s3:smbd map_username() doesn't need sconn anymore
Signed-off-by: Andreas Schneider <asn at samba.org>
commit 6a25668e55929a8111ac0fc5e34b5a83ae936349
Author: Simo Sorce <ssorce at redhat.com>
Date: Mon May 31 10:47:01 2010 -0400
s3:smbd user_ok doesn't need sconn anymore
Signed-off-by: Andreas Schneider <asn at samba.org>
commit 94bf9ce48a0ef8b77f22f3be6244881ca1a41e49
Author: Simo Sorce <ssorce at redhat.com>
Date: Mon May 31 10:45:24 2010 -0400
s3:smbd user_in_list() doesn't need sconn anymore
Signed-off-by: Andreas Schneider <asn at samba.org>
commit 7747dd82f79bc503efe6a2d3139413afb8dda864
Author: Simo Sorce <ssorce at redhat.com>
Date: Mon May 31 10:43:19 2010 -0400
s3:smbd user_in_network() doesn't need sconn anymore
Signed-off-by: Andreas Schneider <asn at samba.org>
commit b32b59d47f8ec597be9d215e5e260e5d1411d3a4
Author: Simo Sorce <ssorce at redhat.com>
Date: Mon May 31 10:36:02 2010 -0400
s3:smbd make yp cache local.
The my_yp_domain variable is just a static cache needed to avoid
making over and over expensive and potentially blocking calls to
yp_get_default_domain().
Instead of keeping this onto the smbd_server_connection struct, just
keep it local to the only function ever using this variable.
This disentagle this function (and a number of calling functions)
from having to pass around smbd_server_connection and thus having
to link against smbd. It also removes a few ifdefs.
Nothing changes from a global/local pov, as the smbd_server_connection
variable passed around is also a global one.
Signed-off-by: Andreas Schneider <asn at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source3/auth/auth_util.c | 6 +---
source3/include/proto.h | 8 ++---
source3/rpc_server/srv_samr_nt.c | 9 ++----
source3/smbd/globals.h | 3 --
source3/smbd/map_username.c | 4 +-
source3/smbd/password.c | 55 ++++++++++++++++----------------------
source3/smbd/process.c | 3 --
source3/smbd/service.c | 5 +--
source3/smbd/sesssetup.c | 4 +-
source3/smbd/share_access.c | 2 +-
source3/smbd/smb2_sesssetup.c | 3 +-
11 files changed, 39 insertions(+), 63 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
index 74d8873..3a63a3b 100644
--- a/source3/auth/auth_util.c
+++ b/source3/auth/auth_util.c
@@ -119,13 +119,12 @@ NTSTATUS make_user_info_map(struct auth_usersupplied_info **user_info,
DATA_BLOB *plaintext,
bool encrypted)
{
- struct smbd_server_connection *sconn = smbd_server_conn;
const char *domain;
NTSTATUS result;
bool was_mapped;
fstring internal_username;
fstrcpy(internal_username, smb_name);
- was_mapped = map_username(sconn, internal_username);
+ was_mapped = map_username(internal_username);
DEBUG(5, ("Mapping user [%s]\\[%s] from workstation [%s]\n",
client_domain, smb_name, wksta_name));
@@ -972,7 +971,6 @@ static NTSTATUS check_account(TALLOC_CTX *mem_ctx, const char *domain,
uid_t *uid, gid_t *gid,
bool *username_was_mapped)
{
- struct smbd_server_connection *sconn = smbd_server_conn;
fstring dom_user, lower_username;
fstring real_username;
struct passwd *passwd;
@@ -985,7 +983,7 @@ static NTSTATUS check_account(TALLOC_CTX *mem_ctx, const char *domain,
/* Get the passwd struct. Try to create the account if necessary. */
- *username_was_mapped = map_username(sconn, dom_user);
+ *username_was_mapped = map_username(dom_user);
passwd = smb_getpwnam( NULL, dom_user, real_username, True );
if (!passwd) {
diff --git a/source3/include/proto.h b/source3/include/proto.h
index cae51e5..237772e 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5689,7 +5689,7 @@ const struct mangle_fns *posix_mangle_init(void);
/* The following definitions come from smbd/map_username.c */
-bool map_username(struct smbd_server_connection *sconn, fstring user);
+bool map_username(fstring user);
/* The following definitions come from smbd/message.c */
@@ -5971,10 +5971,8 @@ void add_session_user(struct smbd_server_connection *sconn, const char *user);
void add_session_workgroup(struct smbd_server_connection *sconn,
const char *workgroup);
const char *get_session_workgroup(struct smbd_server_connection *sconn);
-bool user_in_netgroup(struct smbd_server_connection *sconn,
- const char *user, const char *ngname);
-bool user_in_list(struct smbd_server_connection *sconn,
- const char *user,const char **list);
+bool user_in_netgroup(const char *user, const char *ngname);
+bool user_in_list(const char *user,const char **list);
bool authorise_login(struct smbd_server_connection *sconn,
int snum, fstring user, DATA_BLOB password,
bool *guest);
diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c
index 5b8a79f..30c5c5e 100644
--- a/source3/rpc_server/srv_samr_nt.c
+++ b/source3/rpc_server/srv_samr_nt.c
@@ -1922,7 +1922,6 @@ NTSTATUS _samr_ChangePasswordUser(pipes_struct *p,
NTSTATUS _samr_ChangePasswordUser2(pipes_struct *p,
struct samr_ChangePasswordUser2 *r)
{
- struct smbd_server_connection *sconn = smbd_server_conn;
NTSTATUS status;
fstring user_name;
fstring wks;
@@ -1939,7 +1938,7 @@ NTSTATUS _samr_ChangePasswordUser2(pipes_struct *p,
* function.
*/
- (void)map_username(sconn, user_name);
+ (void)map_username(user_name);
/*
* UNIX username case mangling not required, pass_oem_change
@@ -1969,7 +1968,6 @@ NTSTATUS _samr_ChangePasswordUser2(pipes_struct *p,
NTSTATUS _samr_OemChangePasswordUser2(pipes_struct *p,
struct samr_OemChangePasswordUser2 *r)
{
- struct smbd_server_connection *sconn = smbd_server_conn;
NTSTATUS status;
fstring user_name;
const char *wks = NULL;
@@ -1988,7 +1986,7 @@ NTSTATUS _samr_OemChangePasswordUser2(pipes_struct *p,
* function.
*/
- (void)map_username(sconn, user_name);
+ (void)map_username(user_name);
/*
* UNIX username case mangling not required, pass_oem_change
@@ -2022,7 +2020,6 @@ NTSTATUS _samr_OemChangePasswordUser2(pipes_struct *p,
NTSTATUS _samr_ChangePasswordUser3(pipes_struct *p,
struct samr_ChangePasswordUser3 *r)
{
- struct smbd_server_connection *sconn = smbd_server_conn;
NTSTATUS status;
fstring user_name;
const char *wks = NULL;
@@ -2045,7 +2042,7 @@ NTSTATUS _samr_ChangePasswordUser3(pipes_struct *p,
* function.
*/
- (void)map_username(sconn, user_name);
+ (void)map_username(user_name);
/*
* UNIX username case mangling not required, pass_oem_change
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index cd45165..3666148 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -515,9 +515,6 @@ struct smbd_server_connection {
user_struct *validated_users;
uint16_t next_vuid;
int num_validated_vuids;
-#ifdef HAVE_NETGROUP
- char *my_yp_domain;
-#endif
} sessions;
struct {
connection_struct *Connections;
diff --git a/source3/smbd/map_username.c b/source3/smbd/map_username.c
index dc5d48e..9b24d8f 100644
--- a/source3/smbd/map_username.c
+++ b/source3/smbd/map_username.c
@@ -118,7 +118,7 @@ static void store_map_in_gencache(const char *from, const char *to)
TALLOC_FREE(key);
}
-bool map_username(struct smbd_server_connection *sconn, fstring user)
+bool map_username(fstring user)
{
XFILE *f;
char *mapfile = lp_username_map();
@@ -239,7 +239,7 @@ bool map_username(struct smbd_server_connection *sconn, fstring user)
}
if (strchr_m(dosname,'*') ||
- user_in_list(sconn, user, (const char **)dosuserlist)) {
+ user_in_list(user, (const char **)dosuserlist)) {
DEBUG(3,("Mapped user %s to %s\n",user,unixname));
mapped_user = True;
diff --git a/source3/smbd/password.c b/source3/smbd/password.c
index 809a913..640e634 100644
--- a/source3/smbd/password.c
+++ b/source3/smbd/password.c
@@ -408,28 +408,25 @@ const char *get_session_workgroup(struct smbd_server_connection *sconn)
try lower case.
****************************************************************************/
-bool user_in_netgroup(struct smbd_server_connection *sconn,
- const char *user, const char *ngname)
+bool user_in_netgroup(const char *user, const char *ngname)
{
#ifdef HAVE_NETGROUP
+ static char *my_yp_domain = NULL;
fstring lowercase_user;
- if (sconn->smb1.sessions.my_yp_domain == NULL) {
- yp_get_default_domain(&sconn->smb1.sessions.my_yp_domain);
+ if (my_yp_domain == NULL) {
+ yp_get_default_domain(&my_yp_domain);
}
- if (sconn->smb1.sessions.my_yp_domain == NULL) {
+ if (my_yp_domain == NULL) {
DEBUG(5,("Unable to get default yp domain, "
"let's try without specifying it\n"));
}
DEBUG(5,("looking for user %s of domain %s in netgroup %s\n",
- user,
- sconn->smb1.sessions.my_yp_domain?
- sconn->smb1.sessions.my_yp_domain:"(ANY)",
- ngname));
+ user, my_yp_domain?my_yp_domain:"(ANY)", ngname));
- if (innetgr(ngname, NULL, user, sconn->smb1.sessions.my_yp_domain)) {
+ if (innetgr(ngname, NULL, user, my_yp_domain)) {
DEBUG(5,("user_in_netgroup: Found\n"));
return true;
}
@@ -447,13 +444,9 @@ bool user_in_netgroup(struct smbd_server_connection *sconn,
}
DEBUG(5,("looking for user %s of domain %s in netgroup %s\n",
- lowercase_user,
- sconn->smb1.sessions.my_yp_domain?
- sconn->smb1.sessions.my_yp_domain:"(ANY)",
- ngname));
+ lowercase_user, my_yp_domain?my_yp_domain:"(ANY)", ngname));
- if (innetgr(ngname, NULL, lowercase_user,
- sconn->smb1.sessions.my_yp_domain)) {
+ if (innetgr(ngname, NULL, lowercase_user, my_yp_domain)) {
DEBUG(5,("user_in_netgroup: Found\n"));
return true;
}
@@ -466,8 +459,7 @@ bool user_in_netgroup(struct smbd_server_connection *sconn,
and netgroup lists.
****************************************************************************/
-bool user_in_list(struct smbd_server_connection *sconn,
- const char *user,const char **list)
+bool user_in_list(const char *user,const char **list)
{
if (!list || !*list)
return False;
@@ -495,7 +487,7 @@ bool user_in_list(struct smbd_server_connection *sconn,
* Old behaviour. Check netgroup list
* followed by UNIX list.
*/
- if(user_in_netgroup(sconn, user, *list +1))
+ if(user_in_netgroup(user, *list +1))
return True;
if(user_in_group(user, *list +1))
return True;
@@ -507,7 +499,7 @@ bool user_in_list(struct smbd_server_connection *sconn,
*/
if(user_in_group(user, *list +2))
return True;
- if(user_in_netgroup(sconn, user, *list +2))
+ if(user_in_netgroup(user, *list +2))
return True;
} else {
@@ -526,7 +518,7 @@ bool user_in_list(struct smbd_server_connection *sconn,
/*
* Search netgroup list followed by UNIX list.
*/
- if(user_in_netgroup(sconn, user, *list +2))
+ if(user_in_netgroup(user, *list +2))
return True;
if(user_in_group(user, *list +2))
return True;
@@ -534,7 +526,7 @@ bool user_in_list(struct smbd_server_connection *sconn,
/*
* Just search netgroup list.
*/
- if(user_in_netgroup(sconn, user, *list +1))
+ if(user_in_netgroup(user, *list +1))
return True;
}
}
@@ -548,8 +540,7 @@ bool user_in_list(struct smbd_server_connection *sconn,
Check if a username is valid.
****************************************************************************/
-static bool user_ok(struct smbd_server_connection *sconn,
- const char *user, int snum)
+static bool user_ok(const char *user, int snum)
{
bool ret;
@@ -565,7 +556,7 @@ static bool user_ok(struct smbd_server_connection *sconn,
* around to pass to str_list_sub_basic() */
if ( invalid && str_list_sub_basic(invalid, "", "") ) {
- ret = !user_in_list(sconn, user,
+ ret = !user_in_list(user,
(const char **)invalid);
}
}
@@ -582,7 +573,7 @@ static bool user_ok(struct smbd_server_connection *sconn,
* around to pass to str_list_sub_basic() */
if ( valid && str_list_sub_basic(valid, "", "") ) {
- ret = user_in_list(sconn, user,
+ ret = user_in_list(user,
(const char **)valid);
}
}
@@ -595,7 +586,7 @@ static bool user_ok(struct smbd_server_connection *sconn,
if (user_list &&
str_list_substitute(user_list, "%S",
lp_servicename(snum))) {
- ret = user_in_list(sconn, user,
+ ret = user_in_list(user,
(const char **)user_list);
}
TALLOC_FREE(user_list);
@@ -619,7 +610,7 @@ static char *validate_group(struct smbd_server_connection *sconn,
setnetgrent(group);
while (getnetgrent(&host, &user, &domain)) {
if (user) {
- if (user_ok(sconn, user, snum) &&
+ if (user_ok(user, snum) &&
password_ok(actx, enc,
get_session_workgroup(sconn),
user,password)) {
@@ -685,7 +676,7 @@ static char *validate_group(struct smbd_server_connection *sconn,
member = member_list;
while (*member) {
- if (user_ok(sconn, member,snum) &&
+ if (user_ok(member,snum) &&
password_ok(actx, enc,
get_session_workgroup(sconn),
member,password)) {
@@ -764,7 +755,7 @@ bool authorise_login(struct smbd_server_connection *sconn,
auser = strtok_r(NULL, LIST_SEP, &saveptr)) {
fstring user2;
fstrcpy(user2,auser);
- if (!user_ok(sconn,user2,snum))
+ if (!user_ok(user2,snum))
continue;
if (password_ok(actx, enc,
@@ -817,7 +808,7 @@ bool authorise_login(struct smbd_server_connection *sconn,
} else {
fstring user2;
fstrcpy(user2,auser);
- if (user_ok(sconn,user2,snum) &&
+ if (user_ok(user2,snum) &&
password_ok(actx, enc,
get_session_workgroup(sconn),
user2,password)) {
@@ -853,7 +844,7 @@ bool authorise_login(struct smbd_server_connection *sconn,
*guest = True;
}
- if (ok && !user_ok(sconn, user, snum)) {
+ if (ok && !user_ok(user, snum)) {
DEBUG(0,("authorise_login: rejected invalid user %s\n",user));
ok = False;
}
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index c849757..3396f89 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -3061,9 +3061,6 @@ void smbd_process(void)
smbd_server_conn->smb1.sessions.validated_users = NULL;
smbd_server_conn->smb1.sessions.next_vuid = VUID_OFFSET;
smbd_server_conn->smb1.sessions.num_validated_vuids = 0;
-#ifdef HAVE_NETGROUP
- smbd_server_conn->smb1.sessions.my_yp_domain = NULL;
-#endif
conn_init(smbd_server_conn);
if (!init_dptrs(smbd_server_conn)) {
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index afd9cad..8642544 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -306,7 +306,6 @@ int add_home_service(const char *service, const char *username, const char *home
int find_service(fstring service)
{
int iService;
- struct smbd_server_connection *sconn = smbd_server_conn;
all_string_sub(service,"\\","/",0);
@@ -321,7 +320,7 @@ int find_service(fstring service)
* Try mapping the servicename, it may
* be a Windows to unix mapped user name.
*/
- if(map_username(sconn, service))
+ if(map_username(service))
phome_dir = get_user_home_dir(
talloc_tos(), service);
}
@@ -1158,7 +1157,7 @@ connection_struct *make_connection(struct smbd_server_connection *sconn,
fstring unix_username;
fstrcpy(unix_username,
current_user_info.smb_name);
- map_username(sconn, unix_username);
+ map_username(unix_username);
snum = find_service(unix_username);
}
if (snum != -1) {
diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c
index 7f99d62..dba6dab 100644
--- a/source3/smbd/sesssetup.c
+++ b/source3/smbd/sesssetup.c
@@ -413,7 +413,7 @@ static void reply_spnego_kerberos(struct smb_request *req,
/* lookup the passwd struct, create a new user if necessary */
- username_was_mapped = map_username(sconn, user);
+ username_was_mapped = map_username(user);
pw = smb_getpwnam( mem_ctx, user, real_username, True );
@@ -1676,7 +1676,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
data_blob_free(&nt_resp);
data_blob_clear_free(&plaintext_password);
- map_username(sconn, sub_user);
+ map_username(sub_user);
add_session_user(sconn, sub_user);
add_session_workgroup(sconn, domain);
/* Then force it to null for the benfit of the code below */
diff --git a/source3/smbd/share_access.c b/source3/smbd/share_access.c
index 9800e4f..d41b05d 100644
--- a/source3/smbd/share_access.c
+++ b/source3/smbd/share_access.c
@@ -131,7 +131,7 @@ static bool token_contains_name(TALLOC_CTX *mem_ctx,
}
if (*prefix == '&') {
if (username) {
- if (user_in_netgroup(sconn, username, name)) {
+ if (user_in_netgroup(username, name)) {
return True;
}
}
diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c
index d91d0fe..88454c1 100644
--- a/source3/smbd/smb2_sesssetup.c
+++ b/source3/smbd/smb2_sesssetup.c
@@ -170,7 +170,6 @@ static NTSTATUS smbd_smb2_session_setup_krb5(struct smbd_smb2_session *session,
fstring tmp;
bool username_was_mapped = false;
bool map_domainuser_to_guest = false;
- struct smbd_server_connection *sconn = smbd_server_conn;
if (!spnego_parse_krb5_wrap(*secblob, &ticket, tok_id)) {
status = NT_STATUS_LOGON_FAILURE;
@@ -265,7 +264,7 @@ static NTSTATUS smbd_smb2_session_setup_krb5(struct smbd_smb2_session *session,
/* lookup the passwd struct, create a new user if necessary */
- username_was_mapped = map_username(sconn, user);
+ username_was_mapped = map_username(user);
pw = smb_getpwnam(talloc_tos(), user, real_username, true );
if (pw) {
--
Samba Shared Repository
More information about the samba-cvs
mailing list