The branch, master has been updated via 2b4ce9a... s3: Make login_cache_write take a pointer via 276b1aa... s3: Make login_cache_read take a pointer, avoid a malloc via 13a278c... s3: Remove a typedef via 02d7cdc... s3: Fix some nonempty blank lines from 0d8ab38... s3: fix buildwarning in smbta-util.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 2b4ce9a73f6b041f3cc69125e45b9f61e0155ff5 Author: Volker Lendecke <v...@samba.org> Date: Tue Mar 16 22:22:21 2010 +0100 s3: Make login_cache_write take a pointer commit 276b1aa1891df2a31e8c65b04f41b0a0ebb57335 Author: Volker Lendecke <v...@samba.org> Date: Tue Mar 16 22:18:52 2010 +0100 s3: Make login_cache_read take a pointer, avoid a malloc commit 13a278c1b901cadef7e09d1dc6a89d935ebb73ea Author: Volker Lendecke <v...@samba.org> Date: Tue Mar 16 22:08:37 2010 +0100 s3: Remove a typedef commit 02d7cdc671e27b5ed717c4c0e088b8457caa6e4a Author: Volker Lendecke <v...@samba.org> Date: Tue Mar 16 22:23:06 2010 +0100 s3: Fix some nonempty blank lines ----------------------------------------------------------------------- Summary of changes: source3/include/passdb.h | 4 +- source3/include/proto.h | 5 ++- source3/passdb/login_cache.c | 49 ++++++++++++++++++----------------------- source3/passdb/pdb_ldap.c | 21 ++++++++--------- 4 files changed, 37 insertions(+), 42 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/include/passdb.h b/source3/include/passdb.h index 9be2a69..3ebf72d 100644 --- a/source3/include/passdb.h +++ b/source3/include/passdb.h @@ -104,12 +104,12 @@ enum pdb_value_state { #define IS_SAM_DEFAULT(x, flag) (pdb_get_init_flags(x, flag) == PDB_DEFAULT) /* cache for bad password lockout data, to be used on replicated SAMs */ -typedef struct logon_cache_struct { +struct login_cache { time_t entry_timestamp; uint32 acct_ctrl; uint16 bad_password_count; time_t bad_password_time; -} LOGIN_CACHE; +}; #define SAMU_BUFFER_V0 0 #define SAMU_BUFFER_V1 1 diff --git a/source3/include/proto.h b/source3/include/proto.h index 6e210de..ad95863 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -4409,8 +4409,9 @@ char* get_string_param( const char* param ); bool login_cache_init(void); bool login_cache_shutdown(void); -LOGIN_CACHE * login_cache_read(struct samu *sampass); -bool login_cache_write(const struct samu *sampass, LOGIN_CACHE entry); +bool login_cache_read(struct samu *sampass, struct login_cache *entry); +bool login_cache_write(const struct samu *sampass, + const struct login_cache *entry); bool login_cache_delentry(const struct samu *sampass); /* The following definitions come from passdb/lookup_sid.c */ diff --git a/source3/passdb/login_cache.c b/source3/passdb/login_cache.c index 5630372..cf6c796 100644 --- a/source3/passdb/login_cache.c +++ b/source3/passdb/login_cache.c @@ -2,17 +2,17 @@ Unix SMB/CIFS implementation. struct samu local cache for Copyright (C) Jim McDonough (j...@us.ibm.com) 2004. - + 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/>. */ @@ -31,7 +31,7 @@ static TDB_CONTEXT *cache; bool login_cache_init(void) { char* cache_fname = NULL; - + /* skip file open if it's already opened */ if (cache) return True; @@ -63,24 +63,24 @@ bool login_cache_shutdown(void) } /* if we can't read the cache, oh well, no need to return anything */ -LOGIN_CACHE * login_cache_read(struct samu *sampass) +bool login_cache_read(struct samu *sampass, struct login_cache *entry) { char *keystr; TDB_DATA databuf; - LOGIN_CACHE *entry; uint32_t entry_timestamp = 0, bad_password_time = 0; - if (!login_cache_init()) - return NULL; + if (!login_cache_init()) { + return false; + } if (pdb_get_nt_username(sampass) == NULL) { - return NULL; + return false; } keystr = SMB_STRDUP(pdb_get_nt_username(sampass)); if (!keystr || !keystr[0]) { SAFE_FREE(keystr); - return NULL; + return false; } DEBUG(7, ("Looking up login cache for user %s\n", @@ -88,11 +88,6 @@ LOGIN_CACHE * login_cache_read(struct samu *sampass) databuf = tdb_fetch_bystring(cache, keystr); SAFE_FREE(keystr); - if (!(entry = SMB_MALLOC_P(LOGIN_CACHE))) { - DEBUG(1, ("Unable to allocate cache entry buffer!\n")); - SAFE_FREE(databuf.dptr); - return NULL; - } ZERO_STRUCTP(entry); if (tdb_unpack (databuf.dptr, databuf.dsize, SAM_CACHE_FORMAT, @@ -101,9 +96,8 @@ LOGIN_CACHE * login_cache_read(struct samu *sampass) &entry->bad_password_count, &bad_password_time) == -1) { DEBUG(7, ("No cache entry found\n")); - SAFE_FREE(entry); SAFE_FREE(databuf.dptr); - return NULL; + return false; } /* Deal with possible 64-bit time_t. */ @@ -115,16 +109,17 @@ LOGIN_CACHE * login_cache_read(struct samu *sampass) DEBUG(5, ("Found login cache entry: timestamp %12u, flags 0x%x, count %d, time %12u\n", (unsigned int)entry->entry_timestamp, entry->acct_ctrl, entry->bad_password_count, (unsigned int)entry->bad_password_time)); - return entry; + return true; } -bool login_cache_write(const struct samu *sampass, LOGIN_CACHE entry) +bool login_cache_write(const struct samu *sampass, + const struct login_cache *entry) { char *keystr; TDB_DATA databuf; bool ret; uint32_t entry_timestamp; - uint32_t bad_password_time = (uint32_t)entry.bad_password_time; + uint32_t bad_password_time = entry->bad_password_time; if (!login_cache_init()) return False; @@ -144,19 +139,19 @@ bool login_cache_write(const struct samu *sampass, LOGIN_CACHE entry) databuf.dsize = tdb_pack(NULL, 0, SAM_CACHE_FORMAT, entry_timestamp, - entry.acct_ctrl, - entry.bad_password_count, + entry->acct_ctrl, + entry->bad_password_count, bad_password_time); databuf.dptr = SMB_MALLOC_ARRAY(uint8, databuf.dsize); if (!databuf.dptr) { SAFE_FREE(keystr); return False; } - + if (tdb_pack(databuf.dptr, databuf.dsize, SAM_CACHE_FORMAT, entry_timestamp, - entry.acct_ctrl, - entry.bad_password_count, + entry->acct_ctrl, + entry->bad_password_count, bad_password_time) != databuf.dsize) { SAFE_FREE(keystr); @@ -174,7 +169,7 @@ bool login_cache_delentry(const struct samu *sampass) { int ret; char *keystr; - + if (!login_cache_init()) return False; @@ -191,7 +186,7 @@ bool login_cache_delentry(const struct samu *sampass) DEBUG(9, ("About to delete entry for %s\n", keystr)); ret = tdb_delete_bystring(cache, keystr); DEBUG(9, ("tdb_delete returned %d\n", ret)); - + SAFE_FREE(keystr); return ret == 0; } diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c index d079262..4ff718e 100644 --- a/source3/passdb/pdb_ldap.c +++ b/source3/passdb/pdb_ldap.c @@ -540,7 +540,7 @@ static bool init_sam_from_ldap(struct ldapsam_privates *ldap_state, uint32 hours_len; uint8 hours[MAX_HOURS_LEN]; char *temp = NULL; - LOGIN_CACHE *cache_entry = NULL; + struct login_cache cache_entry; uint32 pwHistLen; bool expand_explicit = lp_passdb_expand_explicit(); bool ret = false; @@ -1120,7 +1120,7 @@ static bool init_sam_from_ldap(struct ldapsam_privates *ldap_state, } /* see if we have newer updates */ - if (!(cache_entry = login_cache_read(sampass))) { + if (!login_cache_read(sampass, &cache_entry)) { DEBUG (9, ("No cache entry, bad count = %u, bad time = %u\n", (unsigned int)pdb_get_bad_password_count(sampass), (unsigned int)pdb_get_bad_password_time(sampass))); @@ -1130,10 +1130,10 @@ static bool init_sam_from_ldap(struct ldapsam_privates *ldap_state, DEBUG(7, ("ldap time is %u, cache time is %u, bad time = %u\n", (unsigned int)ldap_entry_time, - (unsigned int)cache_entry->entry_timestamp, - (unsigned int)cache_entry->bad_password_time)); + (unsigned int)cache_entry.entry_timestamp, + (unsigned int)cache_entry.bad_password_time)); - if (ldap_entry_time > cache_entry->entry_timestamp) { + if (ldap_entry_time > cache_entry.entry_timestamp) { /* cache is older than directory , so we need to delete the entry but allow the fields to be written out */ @@ -1142,13 +1142,13 @@ static bool init_sam_from_ldap(struct ldapsam_privates *ldap_state, /* read cache in */ pdb_set_acct_ctrl(sampass, pdb_get_acct_ctrl(sampass) | - (cache_entry->acct_ctrl & ACB_AUTOLOCK), + (cache_entry.acct_ctrl & ACB_AUTOLOCK), PDB_SET); pdb_set_bad_password_count(sampass, - cache_entry->bad_password_count, + cache_entry.bad_password_count, PDB_SET); pdb_set_bad_password_time(sampass, - cache_entry->bad_password_time, + cache_entry.bad_password_time, PDB_SET); } @@ -1157,7 +1157,6 @@ static bool init_sam_from_ldap(struct ldapsam_privates *ldap_state, fn_exit: TALLOC_FREE(ctx); - SAFE_FREE(cache_entry); return ret; } @@ -1511,7 +1510,7 @@ static bool init_ldap_from_sam (struct ldapsam_privates *ldap_state, DEBUG(7, ("bad password count is reset, deleting login cache entry for %s\n", pdb_get_nt_username(sampass))); login_cache_delentry(sampass); } else { - LOGIN_CACHE cache_entry; + struct login_cache cache_entry; cache_entry.entry_timestamp = time(NULL); cache_entry.acct_ctrl = pdb_get_acct_ctrl(sampass); @@ -1519,7 +1518,7 @@ static bool init_ldap_from_sam (struct ldapsam_privates *ldap_state, cache_entry.bad_password_time = badtime; DEBUG(7, ("Updating bad password count and time in login cache\n")); - login_cache_write(sampass, cache_entry); + login_cache_write(sampass, &cache_entry); } } -- Samba Shared Repository