Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source3/passdb/pdb_interface.c

    r596 r745  
    2222
    2323#include "includes.h"
     24#include "system/passwd.h"
     25#include "passdb.h"
     26#include "secrets.h"
     27#include "../librpc/gen_ndr/samr.h"
     28#include "memcache.h"
     29#include "nsswitch/winbind_client.h"
     30#include "../libcli/security/security.h"
     31#include "../lib/util/util_pw.h"
    2432
    2533#undef DBGC_CLASS
     
    217225}
    218226
     227/**
     228 * @brief Check if the user account has been locked out and try to unlock it.
     229 *
     230 * If the user has been automatically locked out and a lockout duration is set,
     231 * then check if we can unlock the account and reset the bad password values.
     232 *
     233 * @param[in]  sampass  The sam user to check.
     234 *
     235 * @return              True if the function was successfull, false on an error.
     236 */
     237static bool pdb_try_account_unlock(struct samu *sampass)
     238{
     239        uint32_t acb_info = pdb_get_acct_ctrl(sampass);
     240
     241        if ((acb_info & ACB_NORMAL) && (acb_info & ACB_AUTOLOCK)) {
     242                uint32_t lockout_duration;
     243                time_t bad_password_time;
     244                time_t now = time(NULL);
     245                bool ok;
     246
     247                ok = pdb_get_account_policy(PDB_POLICY_LOCK_ACCOUNT_DURATION,
     248                                            &lockout_duration);
     249                if (!ok) {
     250                        DEBUG(0, ("pdb_try_account_unlock: "
     251                                  "pdb_get_account_policy failed.\n"));
     252                        return false;
     253                }
     254
     255                if (lockout_duration == (uint32_t) -1 ||
     256                    lockout_duration == 0) {
     257                        DEBUG(9, ("pdb_try_account_unlock: No reset duration, "
     258                                  "can't reset autolock\n"));
     259                        return false;
     260                }
     261                lockout_duration *= 60;
     262
     263                bad_password_time = pdb_get_bad_password_time(sampass);
     264                if (bad_password_time == (time_t) 0) {
     265                        DEBUG(2, ("pdb_try_account_unlock: Account %s "
     266                                  "administratively locked out "
     267                                  "with no bad password "
     268                                  "time. Leaving locked out.\n",
     269                                  pdb_get_username(sampass)));
     270                        return true;
     271                }
     272
     273                if ((bad_password_time +
     274                     convert_uint32_t_to_time_t(lockout_duration)) < now) {
     275                        NTSTATUS status;
     276
     277                        pdb_set_acct_ctrl(sampass, acb_info & ~ACB_AUTOLOCK,
     278                                          PDB_CHANGED);
     279                        pdb_set_bad_password_count(sampass, 0, PDB_CHANGED);
     280                        pdb_set_bad_password_time(sampass, 0, PDB_CHANGED);
     281
     282                        become_root();
     283                        status = pdb_update_sam_account(sampass);
     284                        unbecome_root();
     285                        if (!NT_STATUS_IS_OK(status)) {
     286                                DEBUG(0, ("_samr_OpenUser: Couldn't "
     287                                          "update account %s - %s\n",
     288                                          pdb_get_username(sampass),
     289                                          nt_errstr(status)));
     290                                return false;
     291                        }
     292                }
     293        }
     294
     295        return true;
     296}
     297
     298/**
     299 * @brief Get a sam user structure by the given username.
     300 *
     301 * This functions also checks if the account has been automatically locked out
     302 * and unlocks it if a lockout duration time has been defined and the time has
     303 * elapsed.
     304 *
     305 * @param[in]  sam_acct  The sam user structure to fill.
     306 *
     307 * @param[in]  username  The username to look for.
     308 *
     309 * @return               True on success, false on error.
     310 */
    219311bool pdb_getsampwnam(struct samu *sam_acct, const char *username)
    220312{
     
    222314        struct samu *for_cache;
    223315        const struct dom_sid *user_sid;
    224 
    225         if (!NT_STATUS_IS_OK(pdb->getsampwnam(pdb, sam_acct, username))) {
    226                 return False;
     316        NTSTATUS status;
     317        bool ok;
     318
     319        status = pdb->getsampwnam(pdb, sam_acct, username);
     320        if (!NT_STATUS_IS_OK(status)) {
     321                return false;
     322        }
     323
     324        ok = pdb_try_account_unlock(sam_acct);
     325        if (!ok) {
     326                DEBUG(1, ("pdb_getsampwnam: Failed to unlock account %s\n",
     327                          username));
    227328        }
    228329
     
    249350**********************************************************************/
    250351
    251 bool guest_user_info( struct samu *user )
     352static bool guest_user_info( struct samu *user )
    252353{
    253354        struct passwd *pwd;
     
    255356        const char *guestname = lp_guestaccount();
    256357
    257         if ( !(pwd = Get_Pwnam_alloc(talloc_autofree_context(), guestname ) ) ) {
     358        pwd = Get_Pwnam_alloc(talloc_tos(), guestname);
     359        if (pwd == NULL) {
    258360                DEBUG(0,("guest_user_info: Unable to locate guest account [%s]!\n",
    259361                        guestname));
     
    268370}
    269371
    270 /**********************************************************************
    271 **********************************************************************/
    272 
    273 bool pdb_getsampwsid(struct samu *sam_acct, const DOM_SID *sid)
    274 {
    275         struct pdb_methods *pdb = pdb_get_methods();
    276         uint32 rid;
     372/**
     373 * @brief Get a sam user structure by the given username.
     374 *
     375 * This functions also checks if the account has been automatically locked out
     376 * and unlocks it if a lockout duration time has been defined and the time has
     377 * elapsed.
     378 *
     379 *
     380 * @param[in]  sam_acct  The sam user structure to fill.
     381 *
     382 * @param[in]  sid       The user SDI to look up.
     383 *
     384 * @return               True on success, false on error.
     385 */
     386bool pdb_getsampwsid(struct samu *sam_acct, const struct dom_sid *sid)
     387{
     388        struct pdb_methods *pdb = pdb_get_methods();
     389        uint32_t rid;
    277390        void *cache_data;
     391        bool ok = false;
    278392
    279393        /* hard code the Guest RID of 501 */
     
    282396                return False;
    283397
    284         if ( rid == DOMAIN_USER_RID_GUEST ) {
     398        if ( rid == DOMAIN_RID_GUEST ) {
    285399                DEBUG(6,("pdb_getsampwsid: Building guest account\n"));
    286400                return guest_user_info( sam_acct );
     
    296410                        cache_data, struct samu);
    297411
    298                 return pdb_copy_sam_account(sam_acct, cache_copy);
    299         }
    300 
    301         return NT_STATUS_IS_OK(pdb->getsampwsid(pdb, sam_acct, sid));
     412                ok = pdb_copy_sam_account(sam_acct, cache_copy);
     413        } else {
     414                ok = NT_STATUS_IS_OK(pdb->getsampwsid(pdb, sam_acct, sid));
     415        }
     416
     417        if (!ok) {
     418                return false;
     419        }
     420
     421        ok = pdb_try_account_unlock(sam_acct);
     422        if (!ok) {
     423                DEBUG(1, ("pdb_getsampwsid: Failed to unlock account %s\n",
     424                          sam_acct->username));
     425        }
     426
     427        return true;
    302428}
    303429
    304430static NTSTATUS pdb_default_create_user(struct pdb_methods *methods,
    305431                                        TALLOC_CTX *tmp_ctx, const char *name,
    306                                         uint32 acb_info, uint32 *rid)
     432                                        uint32_t acb_info, uint32_t *rid)
    307433{
    308434        struct samu *sam_pass;
     
    354480
    355481                pwd = Get_Pwnam_alloc(tmp_ctx, name);
     482
     483                if(pwd == NULL) {
     484                        DEBUG(3, ("Could not find user %s, add script did not work\n", name));
     485                        return NT_STATUS_NO_SUCH_USER;
     486                }
    356487        }
    357488
     
    390521}
    391522
    392 NTSTATUS pdb_create_user(TALLOC_CTX *mem_ctx, const char *name, uint32 flags,
    393                          uint32 *rid)
     523NTSTATUS pdb_create_user(TALLOC_CTX *mem_ctx, const char *name, uint32_t flags,
     524                         uint32_t *rid)
    394525{
    395526        struct pdb_methods *pdb = pdb_get_methods();
     
    538669}
    539670
    540 bool pdb_getgrsid(GROUP_MAP *map, DOM_SID sid)
     671bool pdb_getgrsid(GROUP_MAP *map, struct dom_sid sid)
    541672{
    542673        struct pdb_methods *pdb = pdb_get_methods();
     
    559690                                             TALLOC_CTX *mem_ctx,
    560691                                             const char *name,
    561                                              uint32 *rid)
    562 {
    563         DOM_SID group_sid;
     692                                             uint32_t *rid)
     693{
     694        struct dom_sid group_sid;
    564695        struct group *grp;
    565696        fstring tmp;
     
    596727
    597728NTSTATUS pdb_create_dom_group(TALLOC_CTX *mem_ctx, const char *name,
    598                               uint32 *rid)
     729                              uint32_t *rid)
    599730{
    600731        struct pdb_methods *pdb = pdb_get_methods();
     
    604735static NTSTATUS pdb_default_delete_dom_group(struct pdb_methods *methods,
    605736                                             TALLOC_CTX *mem_ctx,
    606                                              uint32 rid)
    607 {
    608         DOM_SID group_sid;
     737                                             uint32_t rid)
     738{
     739        struct dom_sid group_sid;
    609740        GROUP_MAP map;
    610741        NTSTATUS status;
     
    653784}
    654785
    655 NTSTATUS pdb_delete_dom_group(TALLOC_CTX *mem_ctx, uint32 rid)
     786NTSTATUS pdb_delete_dom_group(TALLOC_CTX *mem_ctx, uint32_t rid)
    656787{
    657788        struct pdb_methods *pdb = pdb_get_methods();
     
    671802}
    672803
    673 NTSTATUS pdb_delete_group_mapping_entry(DOM_SID sid)
     804NTSTATUS pdb_delete_group_mapping_entry(struct dom_sid sid)
    674805{
    675806        struct pdb_methods *pdb = pdb_get_methods();
     
    677808}
    678809
    679 bool pdb_enum_group_mapping(const DOM_SID *sid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap,
     810bool pdb_enum_group_mapping(const struct dom_sid *sid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap,
    680811                            size_t *p_num_entries, bool unix_only)
    681812{
     
    686817
    687818NTSTATUS pdb_enum_group_members(TALLOC_CTX *mem_ctx,
    688                                 const DOM_SID *sid,
    689                                 uint32 **pp_member_rids,
     819                                const struct dom_sid *sid,
     820                                uint32_t **pp_member_rids,
    690821                                size_t *p_num_members)
    691822{
     
    699830
    700831        if ( !NT_STATUS_IS_OK( result ) ) {
    701                 uint32 rid;
     832                uint32_t rid;
    702833
    703834                sid_peek_rid( sid, &rid );
    704835
    705                 if ( rid == DOMAIN_GROUP_RID_USERS ) {
     836                if ( rid == DOMAIN_RID_USERS ) {
    706837                        *p_num_members = 0;
    707838                        *pp_member_rids = NULL;
     
    715846
    716847NTSTATUS pdb_enum_group_memberships(TALLOC_CTX *mem_ctx, struct samu *user,
    717                                     DOM_SID **pp_sids, gid_t **pp_gids,
    718                                     size_t *p_num_groups)
     848                                    struct dom_sid **pp_sids, gid_t **pp_gids,
     849                                    uint32_t *p_num_groups)
    719850{
    720851        struct pdb_methods *pdb = pdb_get_methods();
     
    757888
    758889static bool pdb_user_in_group(TALLOC_CTX *mem_ctx, struct samu *account,
    759                               const DOM_SID *group_sid)
    760 {
    761         DOM_SID *sids;
     890                              const struct dom_sid *group_sid)
     891{
     892        struct dom_sid *sids;
    762893        gid_t *gids;
    763         size_t i, num_groups;
     894        uint32_t i, num_groups;
    764895
    765896        if (!NT_STATUS_IS_OK(pdb_enum_group_memberships(mem_ctx, account,
     
    770901
    771902        for (i=0; i<num_groups; i++) {
    772                 if (sid_equal(group_sid, &sids[i])) {
     903                if (dom_sid_equal(group_sid, &sids[i])) {
    773904                        return True;
    774905                }
     
    779910static NTSTATUS pdb_default_add_groupmem(struct pdb_methods *methods,
    780911                                         TALLOC_CTX *mem_ctx,
    781                                          uint32 group_rid,
    782                                          uint32 member_rid)
    783 {
    784         DOM_SID group_sid, member_sid;
     912                                         uint32_t group_rid,
     913                                         uint32_t member_rid)
     914{
     915        struct dom_sid group_sid, member_sid;
    785916        struct samu *account = NULL;
    786917        GROUP_MAP map;
     
    835966}
    836967
    837 NTSTATUS pdb_add_groupmem(TALLOC_CTX *mem_ctx, uint32 group_rid,
    838                           uint32 member_rid)
     968NTSTATUS pdb_add_groupmem(TALLOC_CTX *mem_ctx, uint32_t group_rid,
     969                          uint32_t member_rid)
    839970{
    840971        struct pdb_methods *pdb = pdb_get_methods();
     
    844975static NTSTATUS pdb_default_del_groupmem(struct pdb_methods *methods,
    845976                                         TALLOC_CTX *mem_ctx,
    846                                          uint32 group_rid,
    847                                          uint32 member_rid)
    848 {
    849         DOM_SID group_sid, member_sid;
     977                                         uint32_t group_rid,
     978                                         uint32_t member_rid)
     979{
     980        struct dom_sid group_sid, member_sid;
    850981        struct samu *account = NULL;
    851982        GROUP_MAP map;
     
    8971028}
    8981029
    899 NTSTATUS pdb_del_groupmem(TALLOC_CTX *mem_ctx, uint32 group_rid,
    900                           uint32 member_rid)
     1030NTSTATUS pdb_del_groupmem(TALLOC_CTX *mem_ctx, uint32_t group_rid,
     1031                          uint32_t member_rid)
    9011032{
    9021033        struct pdb_methods *pdb = pdb_get_methods();
     
    9041035}
    9051036
    906 NTSTATUS pdb_create_alias(const char *name, uint32 *rid)
     1037NTSTATUS pdb_create_alias(const char *name, uint32_t *rid)
    9071038{
    9081039        struct pdb_methods *pdb = pdb_get_methods();
     
    9101041}
    9111042
    912 NTSTATUS pdb_delete_alias(const DOM_SID *sid)
     1043NTSTATUS pdb_delete_alias(const struct dom_sid *sid)
    9131044{
    9141045        struct pdb_methods *pdb = pdb_get_methods();
     
    9161047}
    9171048
    918 NTSTATUS pdb_get_aliasinfo(const DOM_SID *sid, struct acct_info *info)
     1049NTSTATUS pdb_get_aliasinfo(const struct dom_sid *sid, struct acct_info *info)
    9191050{
    9201051        struct pdb_methods *pdb = pdb_get_methods();
     
    9221053}
    9231054
    924 NTSTATUS pdb_set_aliasinfo(const DOM_SID *sid, struct acct_info *info)
     1055NTSTATUS pdb_set_aliasinfo(const struct dom_sid *sid, struct acct_info *info)
    9251056{
    9261057        struct pdb_methods *pdb = pdb_get_methods();
     
    9281059}
    9291060
    930 NTSTATUS pdb_add_aliasmem(const DOM_SID *alias, const DOM_SID *member)
     1061NTSTATUS pdb_add_aliasmem(const struct dom_sid *alias, const struct dom_sid *member)
    9311062{
    9321063        struct pdb_methods *pdb = pdb_get_methods();
     
    9341065}
    9351066
    936 NTSTATUS pdb_del_aliasmem(const DOM_SID *alias, const DOM_SID *member)
     1067NTSTATUS pdb_del_aliasmem(const struct dom_sid *alias, const struct dom_sid *member)
    9371068{
    9381069        struct pdb_methods *pdb = pdb_get_methods();
     
    9401071}
    9411072
    942 NTSTATUS pdb_enum_aliasmem(const DOM_SID *alias, TALLOC_CTX *mem_ctx,
    943                            DOM_SID **pp_members, size_t *p_num_members)
     1073NTSTATUS pdb_enum_aliasmem(const struct dom_sid *alias, TALLOC_CTX *mem_ctx,
     1074                           struct dom_sid **pp_members, size_t *p_num_members)
    9441075{
    9451076        struct pdb_methods *pdb = pdb_get_methods();
     
    9491080
    9501081NTSTATUS pdb_enum_alias_memberships(TALLOC_CTX *mem_ctx,
    951                                     const DOM_SID *domain_sid,
    952                                     const DOM_SID *members, size_t num_members,
    953                                     uint32 **pp_alias_rids,
     1082                                    const struct dom_sid *domain_sid,
     1083                                    const struct dom_sid *members, size_t num_members,
     1084                                    uint32_t **pp_alias_rids,
    9541085                                    size_t *p_num_alias_rids)
    9551086{
     
    9621093}
    9631094
    964 NTSTATUS pdb_lookup_rids(const DOM_SID *domain_sid,
     1095NTSTATUS pdb_lookup_rids(const struct dom_sid *domain_sid,
    9651096                         int num_rids,
    966                          uint32 *rids,
     1097                         uint32_t *rids,
    9671098                         const char **names,
    9681099                         enum lsa_SidType *attrs)
     
    9841115 */
    9851116#if 0
    986 NTSTATUS pdb_lookup_names(const DOM_SID *domain_sid,
     1117NTSTATUS pdb_lookup_names(const struct dom_sid *domain_sid,
    9871118                          int num_names,
    9881119                          const char **names,
    989                           uint32 *rids,
     1120                          uint32_t *rids,
    9901121                          enum lsa_SidType *attrs)
    9911122{
     
    10251156}
    10261157
    1027 bool pdb_uid_to_sid(uid_t uid, DOM_SID *sid)
     1158bool pdb_uid_to_sid(uid_t uid, struct dom_sid *sid)
    10281159{
    10291160        struct pdb_methods *pdb = pdb_get_methods();
     
    10311162}
    10321163
    1033 bool pdb_gid_to_sid(gid_t gid, DOM_SID *sid)
     1164bool pdb_gid_to_sid(gid_t gid, struct dom_sid *sid)
    10341165{
    10351166        struct pdb_methods *pdb = pdb_get_methods();
     
    10371168}
    10381169
    1039 bool pdb_sid_to_id(const DOM_SID *sid, union unid_t *id,
     1170bool pdb_sid_to_id(const struct dom_sid *sid, union unid_t *id,
    10401171                   enum lsa_SidType *type)
    10411172{
     
    10571188********************************************************************/
    10581189
    1059 bool pdb_new_rid(uint32 *rid)
     1190bool pdb_new_rid(uint32_t *rid)
    10601191{
    10611192        struct pdb_methods *pdb = pdb_get_methods();
    10621193        const char *name = NULL;
    10631194        enum lsa_SidType type;
    1064         uint32 allocated_rid = 0;
     1195        uint32_t allocated_rid = 0;
    10651196        int i;
    10661197        TALLOC_CTX *ctx;
     
    11371268}
    11381269
    1139 static NTSTATUS pdb_default_getsampwsid(struct pdb_methods *my_methods, struct samu * user, const DOM_SID *sid)
     1270static NTSTATUS pdb_default_getsampwsid(struct pdb_methods *my_methods, struct samu * user, const struct dom_sid *sid)
    11401271{
    11411272        return NT_STATUS_NO_SUCH_USER;
     
    11861317
    11871318static bool pdb_default_uid_to_sid(struct pdb_methods *methods, uid_t uid,
    1188                                    DOM_SID *sid)
     1319                                   struct dom_sid *sid)
    11891320{
    11901321        struct samu *sampw = NULL;
     
    12251356
    12261357static bool pdb_default_gid_to_sid(struct pdb_methods *methods, gid_t gid,
    1227                                    DOM_SID *sid)
     1358                                   struct dom_sid *sid)
    12281359{
    12291360        GROUP_MAP map;
     
    12381369
    12391370static bool pdb_default_sid_to_id(struct pdb_methods *methods,
    1240                                   const DOM_SID *sid,
     1371                                  const struct dom_sid *sid,
    12411372                                  union unid_t *id, enum lsa_SidType *type)
    12421373{
     
    12441375        bool ret = False;
    12451376        const char *name;
    1246         uint32 rid;
     1377        uint32_t rid;
    12471378
    12481379        mem_ctx = talloc_new(NULL);
     
    13111442}
    13121443
    1313 static bool get_memberuids(TALLOC_CTX *mem_ctx, gid_t gid, uid_t **pp_uids, size_t *p_num)
     1444static bool get_memberuids(TALLOC_CTX *mem_ctx, gid_t gid, uid_t **pp_uids, uint32_t *p_num)
    13141445{
    13151446        struct group *grp;
     
    13681499static NTSTATUS pdb_default_enum_group_members(struct pdb_methods *methods,
    13691500                                               TALLOC_CTX *mem_ctx,
    1370                                                const DOM_SID *group,
    1371                                                uint32 **pp_member_rids,
     1501                                               const struct dom_sid *group,
     1502                                               uint32_t **pp_member_rids,
    13721503                                               size_t *p_num_members)
    13731504{
    13741505        gid_t gid;
    13751506        uid_t *uids;
    1376         size_t i, num_uids;
     1507        uint32_t i, num_uids;
    13771508
    13781509        *pp_member_rids = NULL;
     
    13881519                return NT_STATUS_OK;
    13891520
    1390         *pp_member_rids = TALLOC_ZERO_ARRAY(mem_ctx, uint32, num_uids);
     1521        *pp_member_rids = TALLOC_ZERO_ARRAY(mem_ctx, uint32_t, num_uids);
    13911522
    13921523        for (i=0; i<num_uids; i++) {
    1393                 DOM_SID sid;
     1524                struct dom_sid sid;
    13941525
    13951526                uid_to_sid(&sid, uids[i]);
     
    14111542                                                   TALLOC_CTX *mem_ctx,
    14121543                                                   struct samu *user,
    1413                                                    DOM_SID **pp_sids,
     1544                                                   struct dom_sid **pp_sids,
    14141545                                                   gid_t **pp_gids,
    1415                                                    size_t *p_num_groups)
     1546                                                   uint32_t *p_num_groups)
    14161547{
    14171548        size_t i;
     
    14401571        }
    14411572
    1442         *pp_sids = TALLOC_ARRAY(mem_ctx, DOM_SID, *p_num_groups);
     1573        *pp_sids = TALLOC_ARRAY(mem_ctx, struct dom_sid, *p_num_groups);
    14431574
    14441575        if (*pp_sids == NULL) {
     
    14581589 ********************************************************************/
    14591590
    1460 static bool lookup_global_sam_rid(TALLOC_CTX *mem_ctx, uint32 rid,
     1591static bool lookup_global_sam_rid(TALLOC_CTX *mem_ctx, uint32_t rid,
    14611592                                  const char **name,
    14621593                                  enum lsa_SidType *psid_name_use,
     
    14661597        GROUP_MAP map;
    14671598        bool ret;
    1468         DOM_SID sid;
     1599        struct dom_sid sid;
    14691600
    14701601        *psid_name_use = SID_NAME_UNKNOWN;
     
    14731604                 (unsigned int)rid));
    14741605
    1475         sid_copy(&sid, get_global_sam_sid());
    1476         sid_append_rid(&sid, rid);
     1606        sid_compose(&sid, get_global_sam_sid(), rid);
    14771607
    14781608        /* see if the passdb can help us with the name of the user */
     
    14821612        }
    14831613
    1484         /* BEING ROOT BLLOCK */
     1614        /* BEING ROOT BLOCK */
    14851615        become_root();
    14861616        if (pdb_getsampwsid(sam_account, &sid)) {
     
    15381668        }
    15391669
    1540         if ( rid == DOMAIN_GROUP_RID_USERS ) {
     1670        if ( rid == DOMAIN_RID_USERS ) {
    15411671                *name = talloc_strdup(mem_ctx, "None" );
    15421672                *psid_name_use = SID_NAME_DOM_GRP;
     
    15491679
    15501680static NTSTATUS pdb_default_lookup_rids(struct pdb_methods *methods,
    1551                                         const DOM_SID *domain_sid,
     1681                                        const struct dom_sid *domain_sid,
    15521682                                        int num_rids,
    1553                                         uint32 *rids,
     1683                                        uint32_t *rids,
    15541684                                        const char **names,
    15551685                                        enum lsa_SidType *attrs)
     
    16131743#if 0
    16141744static NTSTATUS pdb_default_lookup_names(struct pdb_methods *methods,
    1615                                          const DOM_SID *domain_sid,
     1745                                         const struct dom_sid *domain_sid,
    16161746                                         int num_names,
    16171747                                         const char **names,
    1618                                          uint32 *rids,
     1748                                         uint32_t *rids,
    16191749                                         enum lsa_SidType *attrs)
    16201750{
     
    16271757
    16281758                for (i=0; i<num_names; i++) {
    1629                         uint32 rid;
     1759                        uint32_t rid;
    16301760
    16311761                        if (lookup_builtin_name(names[i], &rid)) {
     
    17051835}
    17061836
    1707 static void fill_displayentry(TALLOC_CTX *mem_ctx, uint32 rid,
    1708                               uint16 acct_flags,
     1837static void fill_displayentry(TALLOC_CTX *mem_ctx, uint32_t rid,
     1838                              uint16_t acct_flags,
    17091839                              const char *account_name,
    17101840                              const char *fullname,
     
    17401870{
    17411871        struct group_search *state = (struct group_search *)s->private_data;
    1742         uint32 rid;
     1872        uint32_t rid;
    17431873        GROUP_MAP *map = &state->groups[state->current_group];
    17441874
     
    17621892
    17631893static bool pdb_search_grouptype(struct pdb_search *search,
    1764                                  const DOM_SID *sid, enum lsa_SidType type)
     1894                                 const struct dom_sid *sid, enum lsa_SidType type)
    17651895{
    17661896        struct group_search *state;
     
    17931923static bool pdb_default_search_aliases(struct pdb_methods *methods,
    17941924                                       struct pdb_search *search,
    1795                                        const DOM_SID *sid)
     1925                                       const struct dom_sid *sid)
    17961926{
    17971927
     
    18001930
    18011931static struct samr_displayentry *pdb_search_getentry(struct pdb_search *search,
    1802                                                      uint32 idx)
     1932                                                     uint32_t idx)
    18031933{
    18041934        if (idx < search->num_entries)
     
    18251955}
    18261956
    1827 struct pdb_search *pdb_search_users(TALLOC_CTX *mem_ctx, uint32 acct_flags)
     1957struct pdb_search *pdb_search_users(TALLOC_CTX *mem_ctx, uint32_t acct_flags)
    18281958{
    18291959        struct pdb_methods *pdb = pdb_get_methods();
     
    18591989}
    18601990
    1861 struct pdb_search *pdb_search_aliases(TALLOC_CTX *mem_ctx, const DOM_SID *sid)
     1991struct pdb_search *pdb_search_aliases(TALLOC_CTX *mem_ctx, const struct dom_sid *sid)
    18621992{
    18631993        struct pdb_methods *pdb = pdb_get_methods();
     
    18782008}
    18792009
    1880 uint32 pdb_search_entries(struct pdb_search *search,
    1881                           uint32 start_idx, uint32 max_entries,
     2010uint32_t pdb_search_entries(struct pdb_search *search,
     2011                          uint32_t start_idx, uint32_t max_entries,
    18822012                          struct samr_displayentry **result)
    18832013{
    18842014        struct samr_displayentry *end_entry;
    1885         uint32 end_idx = start_idx+max_entries-1;
     2015        uint32_t end_idx = start_idx+max_entries-1;
    18862016
    18872017        /* The first entry needs to be searched after the last. Otherwise the
     
    19052035 *******************************************************************/
    19062036
    1907 bool pdb_get_trusteddom_pw(const char *domain, char** pwd, DOM_SID *sid,
     2037bool pdb_get_trusteddom_pw(const char *domain, char** pwd, struct dom_sid *sid,
    19082038                           time_t *pass_last_set_time)
    19092039{
     
    19142044
    19152045bool pdb_set_trusteddom_pw(const char* domain, const char* pwd,
    1916                            const DOM_SID *sid)
     2046                           const struct dom_sid *sid)
    19172047{
    19182048        struct pdb_methods *pdb = pdb_get_methods();
     
    19262056}
    19272057
    1928 NTSTATUS pdb_enum_trusteddoms(TALLOC_CTX *mem_ctx, uint32 *num_domains,
     2058NTSTATUS pdb_enum_trusteddoms(TALLOC_CTX *mem_ctx, uint32_t *num_domains,
    19292059                              struct trustdom_info ***domains)
    19302060{
     
    19422072                                          const char *domain,
    19432073                                          char** pwd,
    1944                                           DOM_SID *sid,
     2074                                          struct dom_sid *sid,
    19452075                                          time_t *pass_last_set_time)
    19462076{
     
    19532083                                          const char* domain,
    19542084                                          const char* pwd,
    1955                                           const DOM_SID *sid)
     2085                                          const struct dom_sid *sid)
    19562086{
    19572087        return secrets_store_trusted_domain_password(domain, pwd, sid);
     
    19662096static NTSTATUS pdb_default_enum_trusteddoms(struct pdb_methods *methods,
    19672097                                             TALLOC_CTX *mem_ctx,
    1968                                              uint32 *num_domains,
     2098                                             uint32_t *num_domains,
    19692099                                             struct trustdom_info ***domains)
    19702100{
    19712101        return secrets_trusted_domains(mem_ctx, num_domains, domains);
     2102}
     2103
     2104/*******************************************************************
     2105 trusted_domain methods
     2106 *******************************************************************/
     2107
     2108NTSTATUS pdb_get_trusted_domain(TALLOC_CTX *mem_ctx, const char *domain,
     2109                                struct pdb_trusted_domain **td)
     2110{
     2111        struct pdb_methods *pdb = pdb_get_methods();
     2112        return pdb->get_trusted_domain(pdb, mem_ctx, domain, td);
     2113}
     2114
     2115NTSTATUS pdb_get_trusted_domain_by_sid(TALLOC_CTX *mem_ctx, struct dom_sid *sid,
     2116                                struct pdb_trusted_domain **td)
     2117{
     2118        struct pdb_methods *pdb = pdb_get_methods();
     2119        return pdb->get_trusted_domain_by_sid(pdb, mem_ctx, sid, td);
     2120}
     2121
     2122NTSTATUS pdb_set_trusted_domain(const char* domain,
     2123                                const struct pdb_trusted_domain *td)
     2124{
     2125        struct pdb_methods *pdb = pdb_get_methods();
     2126        return pdb->set_trusted_domain(pdb, domain, td);
     2127}
     2128
     2129NTSTATUS pdb_del_trusted_domain(const char *domain)
     2130{
     2131        struct pdb_methods *pdb = pdb_get_methods();
     2132        return pdb->del_trusted_domain(pdb, domain);
     2133}
     2134
     2135NTSTATUS pdb_enum_trusted_domains(TALLOC_CTX *mem_ctx, uint32_t *num_domains,
     2136                                  struct pdb_trusted_domain ***domains)
     2137{
     2138        struct pdb_methods *pdb = pdb_get_methods();
     2139        return pdb->enum_trusted_domains(pdb, mem_ctx, num_domains, domains);
     2140}
     2141
     2142static NTSTATUS pdb_default_get_trusted_domain(struct pdb_methods *methods,
     2143                                               TALLOC_CTX *mem_ctx,
     2144                                               const char *domain,
     2145                                               struct pdb_trusted_domain **td)
     2146{
     2147        return NT_STATUS_NOT_IMPLEMENTED;
     2148}
     2149
     2150static NTSTATUS pdb_default_get_trusted_domain_by_sid(struct pdb_methods *methods,
     2151                                                      TALLOC_CTX *mem_ctx,
     2152                                                      struct dom_sid *sid,
     2153                                                      struct pdb_trusted_domain **td)
     2154{
     2155        return NT_STATUS_NOT_IMPLEMENTED;
     2156}
     2157
     2158static NTSTATUS pdb_default_set_trusted_domain(struct pdb_methods *methods,
     2159                                               const char* domain,
     2160                                               const struct pdb_trusted_domain *td)
     2161{
     2162        return NT_STATUS_NOT_IMPLEMENTED;
     2163}
     2164
     2165static NTSTATUS pdb_default_del_trusted_domain(struct pdb_methods *methods,
     2166                                               const char *domain)
     2167{
     2168        return NT_STATUS_NOT_IMPLEMENTED;
     2169}
     2170
     2171static NTSTATUS pdb_default_enum_trusted_domains(struct pdb_methods *methods,
     2172                                                 TALLOC_CTX *mem_ctx,
     2173                                                 uint32_t *num_domains,
     2174                                                 struct pdb_trusted_domain ***domains)
     2175{
     2176        return NT_STATUS_NOT_IMPLEMENTED;
    19722177}
    19732178
     
    19892194        /* allocate memory for the structure as its own talloc CTX */
    19902195
    1991         *methods = talloc_zero(talloc_autofree_context(), struct pdb_methods);
     2196        *methods = talloc_zero(NULL, struct pdb_methods);
    19922197        if (*methods == NULL) {
    19932198                return NT_STATUS_NO_MEMORY;
     
    20432248        (*methods)->enum_trusteddoms  = pdb_default_enum_trusteddoms;
    20442249
     2250        (*methods)->get_trusted_domain = pdb_default_get_trusted_domain;
     2251        (*methods)->get_trusted_domain_by_sid = pdb_default_get_trusted_domain_by_sid;
     2252        (*methods)->set_trusted_domain = pdb_default_set_trusted_domain;
     2253        (*methods)->del_trusted_domain = pdb_default_del_trusted_domain;
     2254        (*methods)->enum_trusted_domains = pdb_default_enum_trusted_domains;
     2255
    20452256        return NT_STATUS_OK;
    20462257}
Note: See TracChangeset for help on using the changeset viewer.