From 5b4079f748e25f21162e21b439063249baf8dca6 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 15 Jan 2002 01:14:58 +0000 Subject: [PATCH] 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 --- source/auth/auth_sam.c | 6 ++++-- source/auth/auth_util.c | 2 +- source/passdb/passdb.c | 15 +++++++++++++++ source/passdb/pdb_get_set.c | 1 + 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/source/auth/auth_sam.c b/source/auth/auth_sam.c index 107e33c600..01f41fce44 100644 --- a/source/auth/auth_sam.c +++ b/source/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/source/auth/auth_util.c b/source/auth/auth_util.c index a747cf8a35..d2748e30d4 100644 --- a/source/auth/auth_util.c +++ b/source/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/source/passdb/passdb.c b/source/passdb/passdb.c index 39a8fb3676..92447b3766 100644 --- a/source/passdb/passdb.c +++ b/source/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/source/passdb/pdb_get_set.c b/source/passdb/pdb_get_set.c index 0dd0f21c37..db7ab11bb7 100644 --- a/source/passdb/pdb_get_set.c +++ b/source/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 "" -- 2.34.1