summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2002-01-15 01:14:58 +0000
committerAndrew Bartlett <abartlet@samba.org>2002-01-15 01:14:58 +0000
commit90558370ab9019c425019083a6dcb129a808a5ed (patch)
treea8e22132dd0ca947000c46afb970c58d63c48ad6
parentdbee612f7150ee2921c37fa331b38b86d2d63937 (diff)
downloadsamba-90558370ab9019c425019083a6dcb129a808a5ed.tar.gz
samba-90558370ab9019c425019083a6dcb129a808a5ed.tar.bz2
samba-90558370ab9019c425019083a6dcb129a808a5ed.zip
Commit the auth associated changes I missed from the last commit.
Also set the default value of all the allocated strings to "" to avoid changing the interface (becouse pdb_get...() would point to a null string, rather than a null pointer and parts of samba rely on that). Andrew Bartlett (This used to be commit 5b4079f748e25f21162e21b439063249baf8dca6)
-rw-r--r--source3/auth/auth_sam.c6
-rw-r--r--source3/auth/auth_util.c2
-rw-r--r--source3/passdb/passdb.c15
-rw-r--r--source3/passdb/pdb_get_set.c1
4 files changed, 21 insertions, 3 deletions
diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
index 107e33c600..01f41fce44 100644
--- a/source3/auth/auth_sam.c
+++ b/source3/auth/auth_sam.c
@@ -353,8 +353,10 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
return NT_STATUS_UNSUCCESSFUL;
}
- if (!pdb_init_sam(&sampass)) {
- return NT_STATUS_NO_MEMORY;
+ /* Can't use the talloc version here, becouse the returned struct gets
+ kept on the server_info */
+ if (!NT_STATUS_IS_OK(nt_status = pdb_init_sam(&sampass))) {
+ return nt_status;
}
/* get the account information */
diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
index a747cf8a35..d2748e30d4 100644
--- a/source3/auth/auth_util.c
+++ b/source3/auth/auth_util.c
@@ -501,7 +501,7 @@ BOOL make_server_info_sam(auth_serversupplied_info **server_info, SAM_ACCOUNT *s
BOOL make_server_info_pw(auth_serversupplied_info **server_info, const struct passwd *pwd)
{
SAM_ACCOUNT *sampass = NULL;
- if (!pdb_init_sam_pw(&sampass, pwd)) {
+ if (!NT_STATUS_IS_OK(pdb_init_sam_pw(&sampass, pwd))) {
return False;
}
return make_server_info_sam(server_info, sampass);
diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c
index 39a8fb3676..92447b3766 100644
--- a/source3/passdb/passdb.c
+++ b/source3/passdb/passdb.c
@@ -80,6 +80,21 @@ static void pdb_fill_default_sam(SAM_ACCOUNT *user)
memset(user->private.hours, 0xff, user->private.hours_len); /* available at all hours */
user->private.unknown_5 = 0x00000000; /* don't know */
user->private.unknown_6 = 0x000004ec; /* don't know */
+
+ /* Some parts of samba strlen their pdb_get...() returns,
+ so this keeps the interface unchanged for now. */
+
+ user->private.username = "";
+ user->private.domain = "";
+ user->private.nt_username = "";
+ user->private.full_name = "";
+ user->private.home_dir = "";
+ user->private.logon_script = "";
+ user->private.profile_path = "";
+ user->private.acct_desc = "";
+ user->private.workstations = "";
+ user->private.unknown_str = "";
+ user->private.munged_dial = "";
}
static void destroy_pdb_talloc(SAM_ACCOUNT **user)
diff --git a/source3/passdb/pdb_get_set.c b/source3/passdb/pdb_get_set.c
index 0dd0f21c37..db7ab11bb7 100644
--- a/source3/passdb/pdb_get_set.c
+++ b/source3/passdb/pdb_get_set.c
@@ -28,6 +28,7 @@
* @todo Redefine this to NULL, but this changes the API becouse
* much of samba assumes that the pdb_get...() funtions
* return pstrings. (ie not null-pointers).
+ * See also pdb_fill_default_sam().
*/
#define PDB_NOT_QUITE_NULL ""