r1108: Index: pdb_ldap.c
authorVolker Lendecke <vlendec@samba.org>
Thu, 10 Jun 2004 17:42:16 +0000 (17:42 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:51:55 +0000 (10:51 -0500)
===================================================================
--- pdb_ldap.c (revision 1095)
+++ pdb_ldap.c (working copy)
@@ -1134,6 +1134,19 @@
  return NT_STATUS_OK;
 }

+static void append_attr(char ***attr_list, const char *new_attr)
+{
+ int i;
+
+ for (i=0; (*attr_list)[i] != NULL; i++)
+ ;
+
+ (*attr_list) = Realloc((*attr_list), sizeof(**attr_list) * (i+2));
+ SMB_ASSERT((*attr_list) != NULL);
+ (*attr_list)[i] = strdup(new_attr);
+ (*attr_list)[i+1] = NULL;
+}
+
 /**********************************************************************
 Get SAM_ACCOUNT entry from LDAP by username.
 *********************************************************************/
@@ -1149,6 +1162,7 @@
  int rc;

  attr_list = get_userattr_list( ldap_state->schema_ver );
+ append_attr(&attr_list, MODIFY_TIMESTAMP_STRING);
  rc = ldapsam_search_suffix_by_name(ldap_state, sname, &result, attr_list);
  free_attr_list( attr_list );

@@ -1194,6 +1208,7 @@
  switch ( ldap_state->schema_ver ) {
  case SCHEMAVER_SAMBASAMACCOUNT:
  attr_list = get_userattr_list(ldap_state->schema_ver);
+ append_attr(&attr_list, MODIFY_TIMESTAMP_STRING);
  rc = ldapsam_search_suffix_by_sid(ldap_state, sid, result, attr_list);
  free_attr_list( attr_list );

Index: login_cache.c
===================================================================
--- login_cache.c (revision 1095)
+++ login_cache.c (working copy)
@@ -95,10 +95,13 @@
  &entry->bad_password_count,
  &entry->bad_password_time) == -1) {
  DEBUG(7, ("No cache entry found\n"));
+ SAFE_FREE(entry);
  SAFE_FREE(databuf.dptr);
  return NULL;
  }

+ SAFE_FREE(databuf.dptr);
+
  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));

source/passdb/login_cache.c
source/passdb/pdb_ldap.c

index fc05122ccaf6c41937055bd1a0da5a907a3de8c8..0d782912b17d02589a943fac45ec7a3b3f2b2779 100644 (file)
@@ -95,10 +95,13 @@ LOGIN_CACHE * login_cache_read(SAM_ACCOUNT *sampass)
                        &entry->bad_password_count, 
                        &entry->bad_password_time) == -1) {
                DEBUG(7, ("No cache entry found\n"));
+               SAFE_FREE(entry);
                SAFE_FREE(databuf.dptr);
                return NULL;
        }
 
+       SAFE_FREE(databuf.dptr);
+
        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));
index ea1424860b58346f10ca5d14f9cef5799314e42d..d2ee9a2d9dc92b975684d3d7ce30cec29d3631c2 100644 (file)
@@ -1134,6 +1134,19 @@ static NTSTATUS ldapsam_getsampwent(struct pdb_methods *my_methods, SAM_ACCOUNT
        return NT_STATUS_OK;
 }
 
+static void append_attr(char ***attr_list, const char *new_attr)
+{
+       int i;
+
+       for (i=0; (*attr_list)[i] != NULL; i++)
+               ;
+
+       (*attr_list) = Realloc((*attr_list), sizeof(**attr_list) * (i+2));
+       SMB_ASSERT((*attr_list) != NULL);
+       (*attr_list)[i] = strdup(new_attr);
+       (*attr_list)[i+1] = NULL;
+}
+
 /**********************************************************************
 Get SAM_ACCOUNT entry from LDAP by username.
 *********************************************************************/
@@ -1149,6 +1162,7 @@ static NTSTATUS ldapsam_getsampwnam(struct pdb_methods *my_methods, SAM_ACCOUNT
        int rc;
        
        attr_list = get_userattr_list( ldap_state->schema_ver );
+       append_attr(&attr_list, MODIFY_TIMESTAMP_STRING);
        rc = ldapsam_search_suffix_by_name(ldap_state, sname, &result, attr_list);
        free_attr_list( attr_list );
 
@@ -1194,6 +1208,7 @@ static int ldapsam_get_ldap_user_by_sid(struct ldapsam_privates *ldap_state,
        switch ( ldap_state->schema_ver ) {
                case SCHEMAVER_SAMBASAMACCOUNT:
                        attr_list = get_userattr_list(ldap_state->schema_ver);
+                       append_attr(&attr_list, MODIFY_TIMESTAMP_STRING);
                        rc = ldapsam_search_suffix_by_sid(ldap_state, sid, result, attr_list);
                        free_attr_list( attr_list );