[SCM] Samba Shared Repository - branch master updated
Volker Lendecke
vlendec at samba.org
Sun Apr 11 05:53:54 MDT 2010
The branch, master has been updated
via b0d65f8... s3: Use talloc_stackframe() in user_in_group
via 9655f63... s3: Use talloc_stackframe() in user_in_group_sid
via 9cf448a... s3: Use talloc_stackframe() in create_token_from_username
via 3c169c0... s3: Fix a memleak in user_in_group_sid
via a2d1e5e... s3: Remove the make_auth_methods routine
via bc61958... s3: Fix a typo
via c5c40f2... s3: Make "auth_context" its own talloc parent
via e35a2f8... s3: Fix some nonempty lines
from 568ca24... s4:samdb_server_site_dn - free unused DNs in the right way
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit b0d65f827e2314e907b5fd4768c55ae4c816e8da
Author: Volker Lendecke <vl at samba.org>
Date: Sun Apr 11 12:53:00 2010 +0200
s3: Use talloc_stackframe() in user_in_group
commit 9655f63642e9ad3b8b25fcd2beb8bc49fdb9d4e5
Author: Volker Lendecke <vl at samba.org>
Date: Sun Apr 11 12:47:28 2010 +0200
s3: Use talloc_stackframe() in user_in_group_sid
commit 9cf448a30efc73392f267547ef48b7ab19790900
Author: Volker Lendecke <vl at samba.org>
Date: Sun Apr 11 12:47:13 2010 +0200
s3: Use talloc_stackframe() in create_token_from_username
commit 3c169c0475bc4f69c81b93a66884cc3cd9ba19dc
Author: Volker Lendecke <vl at samba.org>
Date: Sun Apr 11 12:44:01 2010 +0200
s3: Fix a memleak in user_in_group_sid
commit a2d1e5e0f77220f912cacb821a928c5e5a952e47
Author: Volker Lendecke <vl at samba.org>
Date: Sun Apr 11 12:37:48 2010 +0200
s3: Remove the make_auth_methods routine
This was just TALLOC_ZERO_P
commit bc619586f210dad5ed01859e21b5f657a34052bf
Author: Volker Lendecke <vl at samba.org>
Date: Sun Apr 11 12:24:07 2010 +0200
s3: Fix a typo
commit c5c40f26482696aca9ee67d170e827f450d59a8b
Author: Volker Lendecke <vl at samba.org>
Date: Sun Apr 11 12:20:24 2010 +0200
s3: Make "auth_context" its own talloc parent
Remove "mem_ctx" from "struct auth_context"
commit e35a2f89b27b49f57d73c2461e0cecd2bbd46fa8
Author: Volker Lendecke <vl at samba.org>
Date: Sun Apr 11 11:50:55 2010 +0200
s3: Fix some nonempty lines
-----------------------------------------------------------------------
Summary of changes:
source3/auth/auth.c | 18 ++++---------
source3/auth/auth_builtin.c | 49 +++++++++++++++++++++++++-------------
source3/auth/auth_domain.c | 42 +++++++++++++++++++-------------
source3/auth/auth_netlogond.c | 10 +++++--
source3/auth/auth_ntlmssp.c | 2 +-
source3/auth/auth_sam.c | 20 +++++++++++----
source3/auth/auth_script.c | 20 +++++++++------
source3/auth/auth_server.c | 27 ++++++++++++--------
source3/auth/auth_unix.c | 23 ++++++++++--------
source3/auth/auth_util.c | 52 +++-------------------------------------
source3/auth/auth_wbc.c | 11 +++++---
source3/auth/auth_winbind.c | 20 +++++++++------
source3/include/auth.h | 1 -
13 files changed, 149 insertions(+), 146 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/auth/auth.c b/source3/auth/auth.c
index ce8722a..317fe30 100644
--- a/source3/auth/auth.c
+++ b/source3/auth/auth.c
@@ -106,7 +106,7 @@ static void get_ntlm_challenge(struct auth_context *auth_context,
}
challenge = auth_method->get_chal(auth_context, &auth_method->private_data,
- auth_context->mem_ctx);
+ auth_context);
if (!challenge.length) {
DEBUG(3, ("auth_get_challenge: getting challenge from authentication method %s FAILED.\n",
auth_method->name));
@@ -122,7 +122,7 @@ static void get_ntlm_challenge(struct auth_context *auth_context,
uchar tmp[8];
generate_random_buffer(tmp, sizeof(tmp));
- auth_context->challenge = data_blob_talloc(auth_context->mem_ctx,
+ auth_context->challenge = data_blob_talloc(auth_context,
tmp, sizeof(tmp));
challenge_set_by = "random";
@@ -331,7 +331,7 @@ static void free_auth_context(struct auth_context **auth_context)
TALLOC_FREE(auth_method->private_data);
}
- talloc_destroy((*auth_context)->mem_ctx);
+ talloc_destroy(*auth_context);
*auth_context = NULL;
}
}
@@ -342,19 +342,13 @@ static void free_auth_context(struct auth_context **auth_context)
static NTSTATUS make_auth_context(struct auth_context **auth_context)
{
- TALLOC_CTX *mem_ctx;
-
- mem_ctx = talloc_init("authentication context");
-
- *auth_context = TALLOC_P(mem_ctx, struct auth_context);
+ *auth_context = TALLOC_ZERO_P(talloc_autofree_context(),
+ struct auth_context);
if (!*auth_context) {
DEBUG(0,("make_auth_context: talloc failed!\n"));
- talloc_destroy(mem_ctx);
return NT_STATUS_NO_MEMORY;
}
- ZERO_STRUCTP(*auth_context);
- (*auth_context)->mem_ctx = mem_ctx;
(*auth_context)->check_ntlm_password = check_ntlm_password;
(*auth_context)->get_ntlm_challenge = get_ntlm_challenge;
(*auth_context)->free = free_auth_context;
@@ -538,7 +532,7 @@ NTSTATUS make_auth_context_fixed(struct auth_context **auth_context, uchar chal[
return nt_status;
}
- (*auth_context)->challenge = data_blob_talloc((*auth_context)->mem_ctx, chal, 8);
+ (*auth_context)->challenge = data_blob_talloc(*auth_context, chal, 8);
(*auth_context)->challenge_set_by = "fixed";
return nt_status;
}
diff --git a/source3/auth/auth_builtin.c b/source3/auth/auth_builtin.c
index f8f048a..e2ad848 100644
--- a/source3/auth/auth_builtin.c
+++ b/source3/auth/auth_builtin.c
@@ -3,17 +3,17 @@
Generic authentication types
Copyright (C) Andrew Bartlett 2001-2002
Copyright (C) Jelmer Vernooij 2002
-
+
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 <http://www.gnu.org/licenses/>.
*/
@@ -52,11 +52,16 @@ static NTSTATUS check_guest_security(const struct auth_context *auth_context,
static NTSTATUS auth_init_guest(struct auth_context *auth_context, const char *options, auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method))
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
+ }
+ result->auth = check_guest_security;
+ result->name = "guest";
- (*auth_method)->auth = check_guest_security;
- (*auth_method)->name = "guest";
+ *auth_method = result;
return NT_STATUS_OK;
}
@@ -84,7 +89,7 @@ static NTSTATUS check_name_to_ntstatus_security(const struct auth_context *auth_
fstring user;
long error_num;
fstrcpy(user, user_info->smb_name);
-
+
if (strnequal("NT_STATUS", user, strlen("NT_STATUS"))) {
strupper_m(user);
return nt_status_string_to_code(user);
@@ -92,11 +97,11 @@ static NTSTATUS check_name_to_ntstatus_security(const struct auth_context *auth_
strlower_m(user);
error_num = strtoul(user, NULL, 16);
-
+
DEBUG(5,("check_name_to_ntstatus_security: Error for user %s was %lx\n", user, error_num));
nt_status = NT_STATUS(error_num);
-
+
return nt_status;
}
@@ -104,11 +109,16 @@ static NTSTATUS check_name_to_ntstatus_security(const struct auth_context *auth_
static NTSTATUS auth_init_name_to_ntstatus(struct auth_context *auth_context, const char *param, auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method))
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
+ }
+ result->auth = check_name_to_ntstatus_security;
+ result->name = "name_to_ntstatus";
- (*auth_method)->auth = check_name_to_ntstatus_security;
- (*auth_method)->name = "name_to_ntstatus";
+ *auth_method = result;
return NT_STATUS_OK;
}
@@ -149,16 +159,21 @@ static DATA_BLOB auth_get_fixed_challenge(const struct auth_context *auth_contex
}
-/** Module initailisation function */
+/** Module initialisation function */
static NTSTATUS auth_init_fixed_challenge(struct auth_context *auth_context, const char *param, auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method))
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
+ }
+ result->auth = check_fixed_challenge_security;
+ result->get_chal = auth_get_fixed_challenge;
+ result->name = "fixed_challenge";
- (*auth_method)->auth = check_fixed_challenge_security;
- (*auth_method)->get_chal = auth_get_fixed_challenge;
- (*auth_method)->name = "fixed_challenge";
+ *auth_method = result;
return NT_STATUS_OK;
}
#endif /* DEVELOPER */
diff --git a/source3/auth/auth_domain.c b/source3/auth/auth_domain.c
index a07aa61..3a9da2c 100644
--- a/source3/auth/auth_domain.c
+++ b/source3/auth/auth_domain.c
@@ -3,17 +3,17 @@
Authenticate against a remote domain
Copyright (C) Andrew Tridgell 1992-1998
Copyright (C) Andrew Bartlett 2001
-
+
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 <http://www.gnu.org/licenses/>.
*/
@@ -138,7 +138,7 @@ static NTSTATUS connect_to_domain_password_server(struct cli_state **cli,
if (mutex == NULL) {
return NT_STATUS_NO_LOGON_SERVERS;
}
-
+
/* Attempt connection */
*retry = True;
result = cli_full_connection(cli, global_myname(), dc_name, dc_ss, 0,
@@ -275,7 +275,7 @@ static NTSTATUS domain_client_validate(TALLOC_CTX *mem_ctx,
*/
/* rety loop for robustness */
-
+
for (i = 0; !NT_STATUS_IS_OK(nt_status) && retry && (i < 3); i++) {
nt_status = connect_to_domain_password_server(&cli,
domain,
@@ -316,7 +316,7 @@ static NTSTATUS domain_client_validate(TALLOC_CTX *mem_ctx,
/* Let go as soon as possible so we avoid any potential deadlocks
with winbind lookup up users or groups. */
-
+
TALLOC_FREE(mutex);
if (!NT_STATUS_IS_OK(nt_status)) {
@@ -409,7 +409,7 @@ static NTSTATUS check_ntdomain_security(const struct auth_context *auth_context,
user_info->domain));
return NT_STATUS_NO_LOGON_SERVERS;
}
-
+
nt_status = domain_client_validate(mem_ctx,
user_info,
domain,
@@ -417,19 +417,23 @@ static NTSTATUS check_ntdomain_security(const struct auth_context *auth_context,
server_info,
dc_name,
&dc_ss);
-
+
return nt_status;
}
/* module initialisation */
static NTSTATUS auth_init_ntdomain(struct auth_context *auth_context, const char* param, auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method)) {
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
}
+ result->name = "ntdomain";
+ result->auth = check_ntdomain_security;
- (*auth_method)->name = "ntdomain";
- (*auth_method)->auth = check_ntdomain_security;
+ *auth_method = result;
return NT_STATUS_OK;
}
@@ -469,7 +473,7 @@ static NTSTATUS check_trustdomain_security(const struct auth_context *auth_conte
This return makes "map to guest = bad user" work again.
The logic is that if we know nothing about the domain, that
user is not known to us and does not exist */
-
+
if ( !is_trusted_domain( user_info->domain ) )
return NT_STATUS_NOT_IMPLEMENTED;
@@ -503,13 +507,13 @@ static NTSTATUS check_trustdomain_security(const struct auth_context *auth_conte
/* use get_dc_name() for consistency even through we know that it will be
a netbios name */
-
+
if ( !get_dc_name(user_info->domain, NULL, dc_name, &dc_ss) ) {
DEBUG(5,("check_trustdomain_security: unable to locate a DC for domain %s\n",
user_info->domain));
return NT_STATUS_NO_LOGON_SERVERS;
}
-
+
nt_status = domain_client_validate(mem_ctx,
user_info,
user_info->domain,
@@ -524,12 +528,16 @@ static NTSTATUS check_trustdomain_security(const struct auth_context *auth_conte
/* module initialisation */
static NTSTATUS auth_init_trustdomain(struct auth_context *auth_context, const char* param, auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method)) {
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
}
+ result->name = "trustdomain";
+ result->auth = check_trustdomain_security;
- (*auth_method)->name = "trustdomain";
- (*auth_method)->auth = check_trustdomain_security;
+ *auth_method = result;
return NT_STATUS_OK;
}
diff --git a/source3/auth/auth_netlogond.c b/source3/auth/auth_netlogond.c
index bfd1228..5e05f1b 100644
--- a/source3/auth/auth_netlogond.c
+++ b/source3/auth/auth_netlogond.c
@@ -299,12 +299,16 @@ static NTSTATUS auth_init_netlogond(struct auth_context *auth_context,
const char *param,
auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method)) {
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
}
+ result->name = "netlogond";
+ result->auth = check_netlogond_security;
- (*auth_method)->name = "netlogond";
- (*auth_method)->auth = check_netlogond_security;
+ *auth_method = result;
return NT_STATUS_OK;
}
diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c
index a62d429..7624117 100644
--- a/source3/auth/auth_ntlmssp.c
+++ b/source3/auth/auth_ntlmssp.c
@@ -64,7 +64,7 @@ static NTSTATUS auth_ntlmssp_set_challenge(struct ntlmssp_state *ntlmssp_state,
SMB_ASSERT(challenge->length == 8);
- auth_context->challenge = data_blob_talloc(auth_context->mem_ctx,
+ auth_context->challenge = data_blob_talloc(auth_context,
challenge->data, challenge->length);
auth_context->challenge_set_by = "NTLMSSP callback (NTLM2)";
diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
index 01b2517..cf121d1 100644
--- a/source3/auth/auth_sam.c
+++ b/source3/auth/auth_sam.c
@@ -517,12 +517,16 @@ done:
/* module initialisation */
static NTSTATUS auth_init_sam_ignoredomain(struct auth_context *auth_context, const char *param, auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method)) {
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
}
+ result->auth = check_sam_security;
+ result->name = "sam_ignoredomain";
- (*auth_method)->auth = check_sam_security;
- (*auth_method)->name = "sam_ignoredomain";
+ *auth_method = result;
return NT_STATUS_OK;
}
@@ -574,12 +578,16 @@ static NTSTATUS check_samstrict_security(const struct auth_context *auth_context
/* module initialisation */
static NTSTATUS auth_init_sam(struct auth_context *auth_context, const char *param, auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method)) {
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
}
+ result->auth = check_samstrict_security;
+ result->name = "sam";
- (*auth_method)->auth = check_samstrict_security;
- (*auth_method)->name = "sam";
+ *auth_method = result;
return NT_STATUS_OK;
}
diff --git a/source3/auth/auth_script.c b/source3/auth/auth_script.c
index be1ae81..81c80eb 100644
--- a/source3/auth/auth_script.c
+++ b/source3/auth/auth_script.c
@@ -4,17 +4,17 @@
Call out to a shell script for an authentication check.
Copyright (C) Jeremy Allison 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 <http://www.gnu.org/licenses/>.
*/
@@ -121,12 +121,14 @@ static NTSTATUS script_check_user_credentials(const struct auth_context *auth_co
/* module initialisation */
static NTSTATUS auth_init_script(struct auth_context *auth_context, const char *param, auth_methods **auth_method)
{
- if (!make_auth_methods(auth_context, auth_method)) {
+ struct auth_methods *result;
+
+ result = TALLOC_ZERO_P(auth_context, struct auth_methods);
+ if (result == NULL) {
return NT_STATUS_NO_MEMORY;
}
-
- (*auth_method)->name = "script";
- (*auth_method)->auth = script_check_user_credentials;
+ result->name = "script";
+ result->auth = script_check_user_credentials;
if (param && *param) {
/* we load the 'fallback' module - if script isn't here, call this
@@ -135,8 +137,10 @@ static NTSTATUS auth_init_script(struct auth_context *auth_context, const char *
if (!load_auth_module(auth_context, param, &priv)) {
return NT_STATUS_UNSUCCESSFUL;
}
- (*auth_method)->private_data = (void *)priv;
+ result->private_data = (void *)priv;
}
+
+ *auth_method = result;
return NT_STATUS_OK;
}
diff --git a/source3/auth/auth_server.c b/source3/auth/auth_server.c
index ec92787..4bcb796 100644
--- a/source3/auth/auth_server.c
+++ b/source3/auth/auth_server.c
@@ -8,12 +8,12 @@
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 <http://www.gnu.org/licenses/>.
*/
@@ -228,7 +228,7 @@ static DATA_BLOB auth_get_challenge_server(const struct auth_context *auth_conte
TALLOC_CTX *mem_ctx)
{
struct cli_state *cli = server_cryptkey(mem_ctx);
-
+
if (cli) {
DEBUG(3,("using password server validation\n"));
@@ -236,7 +236,7 @@ static DATA_BLOB auth_get_challenge_server(const struct auth_context *auth_conte
/* We can't work with unencrypted password servers
unless 'encrypt passwords = no' */
DEBUG(5,("make_auth_info_server: Server is unencrypted, no challenge available..\n"));
-
+
/* However, it is still a perfectly fine connection
to pass that unencrypted password over */
*my_private_data =
@@ -255,7 +255,7 @@ static DATA_BLOB auth_get_challenge_server(const struct auth_context *auth_conte
/* The return must be allocated on the caller's mem_ctx, as our own will be
destoyed just after the call. */
- return data_blob_talloc(auth_context->mem_ctx, cli->secblob.data,8);
+ return data_blob_talloc((TALLOC_CTX *)auth_context, cli->secblob.data,8);
} else {
return data_blob_null;
}
@@ -282,7 +282,7 @@ static NTSTATUS check_smbserver_security(const struct auth_context *auth_context
bool locally_made_cli = False;
cli = state->cli;
-
+
--
Samba Shared Repository
More information about the samba-cvs
mailing list