r16945: Sync trunk -> 3.0 for 3.0.24 code. Still need
[vlendec/samba-autobuild/.git] / source3 / passdb / pdb_interface.c
index 94adebe23277623b6cb32f11d6cbdc40aeb33a79..20aa72d24ee37b2a34c9948c96c530736aa5d2d4 100644 (file)
@@ -361,6 +361,15 @@ static NTSTATUS pdb_default_create_user(struct pdb_methods *methods,
                add_ret = smbrun(add_script,NULL);
                DEBUG(add_ret ? 0 : 3, ("_samr_create_user: Running the command `%s' gave %d\n",
                                        add_script, add_ret));
+
+#ifdef ENABLE_BUILD_FARM_HACKS
+               if (add_ret != 0) {
+                       DEBUG(1, ("Creating a faked user %s for build farm "
+                                 "purposes", name));
+                       faked_create_user(name);
+               }
+#endif
+
                flush_pwnam_cache();
 
                pwd = Get_Pwnam_alloc(tmp_ctx, name);
@@ -956,22 +965,20 @@ NTSTATUS pdb_lookup_rids(const DOM_SID *domain_sid,
                         int num_rids,
                         uint32 *rids,
                         const char **names,
-                        uint32 *attrs)
+                        enum SID_NAME_USE *attrs)
 {
        struct pdb_methods *pdb = pdb_get_methods();
-       return pdb->lookup_rids(pdb, domain_sid,
-                                           num_rids, rids, names, attrs);
+       return pdb->lookup_rids(pdb, domain_sid, num_rids, rids, names, attrs);
 }
 
 NTSTATUS pdb_lookup_names(const DOM_SID *domain_sid,
                          int num_names,
                          const char **names,
                          uint32 *rids,
-                         uint32 *attrs)
+                         enum SID_NAME_USE *attrs)
 {
        struct pdb_methods *pdb = pdb_get_methods();
-       return pdb->lookup_names(pdb, domain_sid,
-                                            num_names, names, rids, attrs);
+       return pdb->lookup_names(pdb, domain_sid, num_names, names, rids, attrs);
 }
 
 BOOL pdb_get_account_policy(int policy_index, uint32 *value)
@@ -1470,6 +1477,11 @@ static BOOL lookup_global_sam_rid(TALLOC_CTX *mem_ctx, uint32 rid,
 
                unbecome_root();                /* -----> EXIT BECOME_ROOT() */
                *name = talloc_strdup(mem_ctx, pdb_get_username(sam_account));
+               if (!*name) {
+                       TALLOC_FREE(sam_account);
+                       return False;
+               }
+
                *psid_name_use = SID_NAME_USER;
 
                TALLOC_FREE(sam_account);
@@ -1528,7 +1540,7 @@ NTSTATUS pdb_default_lookup_rids(struct pdb_methods *methods,
                                 int num_rids,
                                 uint32 *rids,
                                 const char **names,
-                                uint32 *attrs)
+                                enum SID_NAME_USE *attrs)
 {
        int i;
        NTSTATUS result;
@@ -1591,7 +1603,7 @@ NTSTATUS pdb_default_lookup_names(struct pdb_methods *methods,
                                  int num_names,
                                  const char **names,
                                  uint32 *rids,
-                                 uint32 *attrs)
+                                 enum SID_NAME_USE *attrs)
 {
        int i;
        NTSTATUS result;
@@ -1708,7 +1720,7 @@ struct user_search {
 static BOOL next_entry_users(struct pdb_search *s,
                             struct samr_displayentry *entry)
 {
-       struct user_search *state = s->private_data;
+       struct user_search *state = (struct user_search *)s->private_data;
        struct samu *user = NULL;
 
  next:
@@ -1783,7 +1795,7 @@ struct group_search {
 static BOOL next_entry_groups(struct pdb_search *s,
                              struct samr_displayentry *entry)
 {
-       struct group_search *state = s->private_data;
+       struct group_search *state = (struct group_search *)s->private_data;
        uint32 rid;
        GROUP_MAP *map = &state->groups[state->current_group];
 
@@ -1801,7 +1813,8 @@ static BOOL next_entry_groups(struct pdb_search *s,
 
 static void search_end_groups(struct pdb_search *search)
 {
-       struct group_search *state = search->private_data;
+       struct group_search *state =
+               (struct group_search *)search->private_data;
        SAFE_FREE(state->groups);
 }