r16945: Sync trunk -> 3.0 for 3.0.24 code. Still need
[vlendec/samba-autobuild/.git] / source3 / passdb / pdb_ldap.c
index 4d0c84b5433bb25a2c6b577447dea5b004ad7bbe..83f8d7183ccf6fe66abdbfb1b7639ceb816334a4 100644 (file)
@@ -650,12 +650,13 @@ static BOOL init_sam_from_ldap(struct ldapsam_privates *ldap_state,
                        get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_HOME_PATH), homedir)) 
        {
                pdb_set_homedir( sampass, 
-                       talloc_sub_basic(sampass, username, lp_logon_home()),
+                       talloc_sub_basic(sampass, username, domain,
+                                        lp_logon_home()),
                        PDB_DEFAULT );
        } else {
                pstrcpy( tmpstring, homedir );
                if (expand_explicit) {
-                       standard_sub_basic( username, tmpstring,
+                       standard_sub_basic( username, domain, tmpstring,
                                            sizeof(tmpstring) );
                }
                pdb_set_homedir(sampass, tmpstring, PDB_SET);
@@ -665,12 +666,13 @@ static BOOL init_sam_from_ldap(struct ldapsam_privates *ldap_state,
                        get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_LOGON_SCRIPT), logon_script)) 
        {
                pdb_set_logon_script( sampass, 
-                       talloc_sub_basic(sampass, username, lp_logon_script()), 
+                       talloc_sub_basic(sampass, username, domain,
+                                        lp_logon_script()), 
                        PDB_DEFAULT );
        } else {
                pstrcpy( tmpstring, logon_script );
                if (expand_explicit) {
-                       standard_sub_basic( username, tmpstring,
+                       standard_sub_basic( username, domain, tmpstring,
                                            sizeof(tmpstring) );
                }
                pdb_set_logon_script(sampass, tmpstring, PDB_SET);
@@ -680,12 +682,13 @@ static BOOL init_sam_from_ldap(struct ldapsam_privates *ldap_state,
                        get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_PROFILE_PATH), profile_path)) 
        {
                pdb_set_profile_path( sampass, 
-                       talloc_sub_basic( sampass, username, lp_logon_path()),
+                       talloc_sub_basic( sampass, username, domain,
+                                         lp_logon_path()),
                        PDB_DEFAULT );
        } else {
                pstrcpy( tmpstring, profile_path );
                if (expand_explicit) {
-                       standard_sub_basic( username, tmpstring,
+                       standard_sub_basic( username, domain, tmpstring,
                                            sizeof(tmpstring) );
                }
                pdb_set_profile_path(sampass, tmpstring, PDB_SET);
@@ -787,7 +790,7 @@ static BOOL init_sam_from_ldap(struct ldapsam_privates *ldap_state,
 
                pwHistLen = MIN(pwHistLen, MAX_PW_HISTORY_LEN);
 
-               if ((pwhist = SMB_MALLOC(pwHistLen * PW_HISTORY_ENTRY_LEN)) == NULL){
+               if ((pwhist = SMB_MALLOC_ARRAY(uint8, pwHistLen * PW_HISTORY_ENTRY_LEN)) == NULL){
                        DEBUG(0, ("init_sam_from_ldap: malloc failed!\n"));
                        return False;
                }
@@ -967,15 +970,14 @@ static BOOL init_ldap_from_sam (struct ldapsam_privates *ldap_state,
        /* only update the RID if we actually need to */
        if (need_update(sampass, PDB_USERSID)) {
                fstring sid_string;
-               fstring dom_sid_string;
                const DOM_SID *user_sid = pdb_get_user_sid(sampass);
                
                switch ( ldap_state->schema_ver ) {
                        case SCHEMAVER_SAMBAACCOUNT:
                                if (!sid_peek_check_rid(&ldap_state->domain_sid, user_sid, &rid)) {
                                        DEBUG(1, ("init_ldap_from_sam: User's SID (%s) is not for this domain (%s), cannot add to LDAP!\n", 
-                                               sid_to_string(sid_string, user_sid), 
-                                               sid_to_string(dom_sid_string, &ldap_state->domain_sid)));
+                                                 sid_string_static(user_sid), 
+                                                 sid_string_static(&ldap_state->domain_sid)));
                                        return False;
                                }
                                slprintf(temp, sizeof(temp) - 1, "%i", rid);
@@ -1001,15 +1003,14 @@ static BOOL init_ldap_from_sam (struct ldapsam_privates *ldap_state,
 
        if (need_update(sampass, PDB_GROUPSID)) {
                fstring sid_string;
-               fstring dom_sid_string;
                const DOM_SID *group_sid = pdb_get_group_sid(sampass);
                
                switch ( ldap_state->schema_ver ) {
                        case SCHEMAVER_SAMBAACCOUNT:
                                if (!sid_peek_check_rid(&ldap_state->domain_sid, group_sid, &rid)) {
                                        DEBUG(1, ("init_ldap_from_sam: User's Primary Group SID (%s) is not for this domain (%s), cannot add to LDAP!\n",
-                                               sid_to_string(sid_string, group_sid),
-                                               sid_to_string(dom_sid_string, &ldap_state->domain_sid)));
+                                                 sid_string_static(group_sid),
+                                                 sid_string_static(&ldap_state->domain_sid)));
                                        return False;
                                }
 
@@ -1747,7 +1748,7 @@ static NTSTATUS ldapsam_update_sam_account(struct pdb_methods *my_methods, struc
        LDAPMod **mods = NULL;
        const char **attr_list;
 
-       result = pdb_get_backend_private_data(newpwd, my_methods);
+       result = (LDAPMessage *)pdb_get_backend_private_data(newpwd, my_methods);
        if (!result) {
                attr_list = get_userattr_list(NULL, ldap_state->schema_ver);
                if (pdb_get_username(newpwd) == NULL) {
@@ -3923,7 +3924,8 @@ struct ldap_search_state {
 
 static BOOL ldapsam_search_firstpage(struct pdb_search *search)
 {
-       struct ldap_search_state *state = search->private_data;
+       struct ldap_search_state *state =
+               (struct ldap_search_state *)search->private_data;
        LDAP *ld;
        int rc = LDAP_OPERATIONS_ERROR;
 
@@ -3975,7 +3977,8 @@ static BOOL ldapsam_search_firstpage(struct pdb_search *search)
 
 static BOOL ldapsam_search_nextpage(struct pdb_search *search)
 {
-       struct ldap_search_state *state = search->private_data;
+       struct ldap_search_state *state =
+               (struct ldap_search_state *)search->private_data;
        int rc;
 
        if (!state->connection->paged_results) {
@@ -4005,7 +4008,8 @@ static BOOL ldapsam_search_nextpage(struct pdb_search *search)
 static BOOL ldapsam_search_next_entry(struct pdb_search *search,
                                      struct samr_displayentry *entry)
 {
-       struct ldap_search_state *state = search->private_data;
+       struct ldap_search_state *state =
+               (struct ldap_search_state *)search->private_data;
        BOOL result;
 
  retry:
@@ -4040,7 +4044,8 @@ static BOOL ldapsam_search_next_entry(struct pdb_search *search,
 
 static void ldapsam_search_end(struct pdb_search *search)
 {
-       struct ldap_search_state *state = search->private_data;
+       struct ldap_search_state *state =
+               (struct ldap_search_state *)search->private_data;
        int rc;
 
        if (state->pagedresults_cookie == NULL)
@@ -4156,7 +4161,8 @@ static BOOL ldapsam_search_users(struct pdb_methods *methods,
                                 struct pdb_search *search,
                                 uint32 acct_flags)
 {
-       struct ldapsam_privates *ldap_state = methods->private_data;
+       struct ldapsam_privates *ldap_state =
+               (struct ldapsam_privates *)methods->private_data;
        struct ldap_search_state *state;
 
        state = TALLOC_P(search->mem_ctx, struct ldap_search_state);
@@ -4314,7 +4320,8 @@ static BOOL ldapsam_search_grouptype(struct pdb_methods *methods,
                                      const DOM_SID *sid,
                                     enum SID_NAME_USE type)
 {
-       struct ldapsam_privates *ldap_state = methods->private_data;
+       struct ldapsam_privates *ldap_state =
+               (struct ldapsam_privates *)methods->private_data;
        struct ldap_search_state *state;
 
        state = TALLOC_P(search->mem_ctx, struct ldap_search_state);
@@ -4473,8 +4480,8 @@ static NTSTATUS ldapsam_new_rid_internal(struct pdb_methods *methods, uint32 *ri
        int i;
 
        for (i=0; i<10; i++) {
-               NTSTATUS result = ldapsam_get_new_rid(methods->private_data,
-                                                     rid);
+               NTSTATUS result = ldapsam_get_new_rid(
+                       (struct ldapsam_privates *)methods->private_data, rid);
                if (NT_STATUS_IS_OK(result)) {
                        return result;
                }
@@ -4500,7 +4507,8 @@ static BOOL ldapsam_sid_to_id(struct pdb_methods *methods,
                              const DOM_SID *sid,
                              union unid_t *id, enum SID_NAME_USE *type)
 {
-       struct ldapsam_privates *priv = methods->private_data;
+       struct ldapsam_privates *priv =
+               (struct ldapsam_privates *)methods->private_data;
        char *filter;
        const char *attrs[] = { "sambaGroupType", "gidNumber", "uidNumber",
                                NULL };
@@ -5487,7 +5495,7 @@ NTSTATUS pdb_init_ldapsam_compat(struct pdb_methods **pdb_method, const char *lo
 
        (*pdb_method)->name = "ldapsam_compat";
 
-       ldap_state = (*pdb_method)->private_data;
+       ldap_state = (struct ldapsam_privates *)((*pdb_method)->private_data);
        ldap_state->schema_ver = SCHEMAVER_SAMBAACCOUNT;
 
        sid_copy(&ldap_state->domain_sid, get_global_sam_sid());
@@ -5545,7 +5553,7 @@ NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location)
                }
        }
 
-       ldap_state = (*pdb_method)->private_data;
+       ldap_state = (struct ldapsam_privates *)((*pdb_method)->private_data);
        ldap_state->schema_ver = SCHEMAVER_SAMBASAMACCOUNT;
 
        /* Try to setup the Domain Name, Domain SID, algorithmic rid base */